⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csdn_文档中心_关于包(package)应用规范的说明.htm

📁 csdn10年中间经典帖子
💻 HTM
📖 第 1 页 / 共 2 页
字号:
          <TD><B>&nbsp;&nbsp;&nbsp;&nbsp;关于包(Package)应用规范的说明</B>&nbsp;&nbsp;&nbsp;&nbsp;pepper_dog999(原作) 
          </TD></TR>
        <TR>
          <TD align=middle height=5></TD>
          <TD align=middle width=500></TD></TR>
        <TR>
          <TD align=middle bgColor=#003399><FONT color=#ffffff>关键字</FONT></TD>
          <TD width=500>&nbsp;&nbsp;&nbsp;&nbsp;关于包(Package)应用规范的说明</TD></TR>
        <TR>
          <TD align=middle height=5></TD>
          <TD align=middle width=500></TD></TR></TBODY></TABLE><!--文章说明信息结束//-->
      <TABLE border=0 width=600>
        <TBODY>
        <TR>
          <TD align=left><BR>
            <P>一、 dataBase端开发介绍:<BR>package分为两个部分:1、package head,2、package 
            body。前者为包头的定义,后者为过程及方法的实体。只要包头定义中描述足够详细,可以隐藏包体的细节。举例如下:<BR>package 
            head pkg_topnet<BR>is<BR>--user define data 
            type—<BR>--用户自定义数据类型--</P>
            <P>&nbsp;&nbsp; --user define procedure and 
            function—<BR>&nbsp;&nbsp; --用户自定义过程和函数—<BR>&nbsp;&nbsp; --the 
            procedure proc_password_validate is the process ofpassword 
            validate—<BR>&nbsp;&nbsp; --the param log_id is the pa_id 
            coloum—<BR>&nbsp;&nbsp; --the param log_pass is the pb_yhpwd 
            coloum—<BR>&nbsp;&nbsp; --the param member_name is the pb_name 
            coloum—<BR>&nbsp;&nbsp; --if the member_name is return value 
            “none”,it indicate that the—<BR>&nbsp;&nbsp; --login process has 
            been crash—<BR>&nbsp;&nbsp; 
            --proc_password_validate过程用于密码的验证—<BR>&nbsp;&nbsp; 
            --参数log_id为pa_id字段—<BR>&nbsp;&nbsp; 
            --参数log_pass为pb_yhpwd字段—<BR>&nbsp;&nbsp; 
            --参数member_name为pb_name字段—<BR>&nbsp;&nbsp; 
            --如果member_name的返回值为”none”,则说明验证过程出错--<BR>&nbsp;&nbsp; procedure 
            proc_password_validate(<BR>&nbsp;&nbsp;&nbsp; log_id in 
            number,<BR>&nbsp;&nbsp;&nbsp; log_pass in 
            varchar2,<BR>&nbsp;&nbsp;&nbsp; member_name out 
            varchar2<BR>&nbsp;&nbsp; );</P>
            <P>&nbsp;&nbsp; --the procedure proc_password_change is the process 
            ofpassword change—<BR>&nbsp;&nbsp; --the param log_id is the pa_id 
            coloum—<BR>&nbsp;&nbsp; --the param org_pass is the user’s original 
            password—<BR>&nbsp;&nbsp; --the param new_pass is the user’s new 
            password—<BR>&nbsp;&nbsp; --the param status is the status of this 
            process—<BR>&nbsp;&nbsp; --if the status is return value 0,it 
            indicate that the—<BR>&nbsp;&nbsp; --change process has been 
            validate—<BR>--if the status is return value 1,it indicate that 
            the—<BR>&nbsp;&nbsp; --user’s original password make 
            misetake—<BR>&nbsp;&nbsp; 
            --proc_password_change过程用于密码的修改—<BR>&nbsp;&nbsp; 
            --参数log_id为pa_id字段—<BR>&nbsp;&nbsp; 
            --参数org_pass为用户原来的密码—<BR>&nbsp;&nbsp; 
            --参数new_pass为用户新的密码—<BR>&nbsp;&nbsp; 
            --参数status为该过程的状态返回值--<BR>&nbsp;&nbsp; 
            --如果status的返回值为0,则说明修改过程成功—<BR>&nbsp;&nbsp; 
            --如果status的返回值为1,则说明用户的原始密码有错--<BR>&nbsp;&nbsp; procedure 
            proc_password_change(<BR>&nbsp;&nbsp;&nbsp; log_id in 
            number,<BR>&nbsp;&nbsp;&nbsp; org_pass in 
            varchar2,&nbsp;<BR>&nbsp;&nbsp;&nbsp; new_pass in 
            varchar2,<BR>&nbsp;&nbsp;&nbsp; status out number<BR>&nbsp;&nbsp; 
            );<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; end;</P>
            <P>因此,我们只需要提供一个规范的包头信息就可以满足大家的开发需要,而包体的详细过程则可以隐藏,当有新的需要时,只需更新包,然后给大家重发一个包头的描述就可以了,在开发阶段中,可以先采用procedure,然后统一将所有的procedure打包,在app端的修改很小,只需要更新三行代码。<BR>二、 
            appServer端开发解释:<BR>1、 jdbc描述:<BR>package pepper_dog999.UseJdbc;</P>
            <P>import java.sql.*;</P>
            <P>public class JdbcCallPackage {</P>
            <P>&nbsp; public static void main(String[] args) 
            {<BR>&nbsp;&nbsp;&nbsp; Connection conn;<BR>&nbsp;&nbsp;&nbsp; 
            String 
            driver="oracle.jdbc.driver.OracleDriver";<BR>&nbsp;&nbsp;&nbsp; 
            String <A 
            href='mailto:url="jdbc:oracle:thin:@192.168.128.41:1521:ORC2"'>url="jdbc:oracle:thin:@192.168.128.41:1521:ORC2"</A>;<BR>&nbsp;&nbsp;&nbsp; 
            try{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            conn=JdbcConnDb.connDb(driver,url,"pepper_dog999","bad_boy2");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            CallableStatement 
            cstmt=conn.prepareCall("{call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            pkg_topnet.proc_password_validate(?,?,?)}");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            cstmt.setInt(1,10001);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            cstmt.setString(2,"pass1");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            cstmt.registerOutParameter(3,Types.VARCHAR);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            cstmt.executeQuery();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String 
            pbName=cstmt.getString(3);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            System.out.println("the output param is pbName,and its value 
            is:"+pbName);<BR>&nbsp;&nbsp;&nbsp; }catch(SQLException 
            ex){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("SQL 
            Exception:"+ex.getMessage());<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp; 
            }<BR>}</P>
            <P>class JdbcConnDb {</P>
            <P>&nbsp; public static Connection connDb(String driver,String 
            url,String user,String pass){<BR>&nbsp;&nbsp;&nbsp; Connection 
            conn=null;<BR>&nbsp;&nbsp;&nbsp; 
            try{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            Class.forName(driver);<BR>&nbsp;&nbsp;&nbsp; 
            }catch(java.lang.ClassNotFoundException 
            e){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Class Not 
            Found Exception:"+e.getMessage());<BR>&nbsp;&nbsp;&nbsp; 
            }<BR>&nbsp;&nbsp;&nbsp; try{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            conn=DriverManager.getConnection(url,user,pass);<BR>&nbsp;&nbsp;&nbsp; 
            }catch(SQLException ex){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            System.out.println("SQL 
            Exception:"+ex.getMessage());<BR>&nbsp;&nbsp;&nbsp; 
            }<BR>&nbsp;&nbsp;&nbsp; return(conn);<BR>&nbsp; }<BR>}</P>
            <P>其中类connDb类为自定义类,用来产生一个连接的对象实例。</P>
            <P>2、 ODBC中ADO数据模型描述:(各语言根据自身特点调整)<BR>function 
            ConnectOra8(dsn_name,user,password)<BR>&nbsp;set 
            conn=server.CreateObject("ADODB.Connection")<BR>&nbsp;conn.Connectionstring="DSN="&amp;dsn_name&amp;";uid="&amp;user&amp;";pwd="&amp;password&amp;";"<BR>&nbsp;conn.Open<BR>&nbsp;conn=ConnectOra8("dsn_name","user","password")<BR>&nbsp; 
            end funcation</P>
            <P>&nbsp; sub ODBCCallPackage()<BR>&nbsp;&nbsp; const 
            adOpenStatic=3<BR>&nbsp;&nbsp; const 
            adCmdText=&amp;h0001<BR>&nbsp;&nbsp; const 
            adCmdStoredProcedure=&amp;H0004<BR>&nbsp;&nbsp; const 
            adParamInput=&amp;H0001<BR>&nbsp;&nbsp; const 
            adParamOutput=&amp;H0002<BR>&nbsp;&nbsp; const 
            adVarChar=200<BR>&nbsp;&nbsp; const adInteger=3<BR>&nbsp;&nbsp; 
            const adDate=7<BR>&nbsp;&nbsp; SQLString="{call 
            pkg_topnet_package.proc_password_validate(?,?,?)}"<BR>&nbsp;&nbsp; 
            conn=connectOra8("conn_Ora","pepper_dog999","bad_boy2")<BR>&nbsp;&nbsp; 
            set comm=server.createObject("ADODB.Command")<BR>&nbsp;&nbsp; with 
            comm<BR>&nbsp;&nbsp;&nbsp; 
            .activeConnection=conn<BR>&nbsp;&nbsp;&nbsp; 
            .commandType=adCmdText<BR>&nbsp;&nbsp;&nbsp; 
            .commandText=SQLString<BR>&nbsp;&nbsp; end with<BR>&nbsp;&nbsp; set 
            pa_id=comm.CreateParameter(pa_id,adInteger,adParamInput,12)<BR>&nbsp;pa_id.value=10001<BR>&nbsp;comm.parameters.append 
            pa_id<BR>&nbsp;set 
            pb_yhpwd=comm.CreateParameter(pb_yhpwd,adVarChar,adParamInput,20)<BR>&nbsp;pb_yhpwd.value="pass1"<BR>&nbsp;comm.parameters.append 
            pb_yhpwd<BR>&nbsp;'output<BR>&nbsp;set 
            pb_name=comm.CreateParameter(pp_name,adVarChar,adParamOutput,20)<BR>&nbsp;comm.parameters.append 
            pb_name<BR>&nbsp;&nbsp; comm.execute<BR>&nbsp;&nbsp; response.write 
            “the output param is member_name and it’s value 
            is”&amp;pb_name<BR>&nbsp; end sub</P>
            <P>三、 
            优越性描述:<BR>使用统一的包(package)管理可以将开发过程中无序的开发工作协调,而又不会对现有的代码造成太大的改动。其优点如下:<BR>1、 
            权限的管理:可以由专人管理包的更新,和包头描述的发放,由于隐藏了包体,可以使不太熟悉该开发需求的人很快的上手,因为前端开发的格式可以统一。<BR>2、 
            性能的改善:可以将核心的过程和性能要求较高的过程封装包体中,对性能提升大有好处。<BR>3、 
            代码的管理:由于包体和前端程序的分离,当需求改变时可以很快的修改。<BR></P><BR></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE align=center bgColor=#006699 border=0 cellPadding=0 cellSpacing=0 
width=770>
  <TBODY>
  <TR bgColor=#006699>
    <TD align=middle bgColor=#006699 id=white><FONT 
    color=#ffffff>对该文的评论</FONT></TD>
    <TD align=middle>
      <SCRIPT src="CSDN_文档中心_关于包(Package)应用规范的说明.files/readnum.htm"></SCRIPT>
    </TD></TR></TBODY></TABLE><BR>
<DIV align=center>
<TABLE align=center bgColor=#cccccc border=0 cellPadding=2 cellSpacing=1 
width=770>
  <TBODY>
  <TR>
    <TH bgColor=#006699 id=white><FONT 
color=#ffffff>我要评论</FONT></TH></TR></TBODY></TABLE></DIV>
<DIV align=center>
<TABLE border=0 width=770>
  <TBODY>
  <TR>
    <TD>你没有登陆,无法发表评论。 请先<A 
      href="http://www.csdn.net/member/login.asp?from=/Develop/read_article.asp?id=3451">登陆</A> 
      <A 
href="http://www.csdn.net/expert/zc.asp">我要注册</A><BR></TD></TR></TBODY></TABLE></DIV><BR>
<HR noShade SIZE=1 width=770>

<TABLE border=0 cellPadding=0 cellSpacing=0 width=500>
  <TBODY>
  <TR align=middle>
    <TD height=10 vAlign=bottom><A 
      href="http://www.csdn.net/intro/intro.asp?id=2">网站简介</A> - <A 
      href="http://www.csdn.net/intro/intro.asp?id=5">广告服务</A> - <A 
      href="http://www.csdn.net/map/map.shtm">网站地图</A> - <A 
      href="http://www.csdn.net/help/help.asp">帮助信息</A> - <A 
      href="http://www.csdn.net/intro/intro.asp?id=2">联系方式</A> - <A 
      href="http://www.csdn.net/english">English</A> </TD>
    <TD align=middle rowSpan=3><A 
      href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"><IMG 
      border=0 height=48 src="CSDN_文档中心_关于包(Package)应用规范的说明.files/biaoshi.gif" 
      width=40></A></TD></TR>
  <TR align=middle>
    <TD vAlign=top>百联美达美公司 版权所有 京ICP证020026号</TD></TR>
  <TR align=middle>
    <TD vAlign=top><FONT face=Verdana>Copyright &copy; CSDN.net, Inc. All rights 
      reserved</FONT></TD></TR>
  <TR>
    <TD height=15></TD>
    <TD></TD></TR></TBODY></TABLE></DIV>
<DIV></DIV><!--内容结束//--><!--结束//--></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -