??xml version="1.0" encoding="utf-8" standalone="yes"?>国产a亚洲精品,午夜av在线播放,一区二区三区高清在线视频http://www.aygfsteel.com/hitlang/category/15674.html学以致用zh-cnFri, 02 Mar 2007 06:39:34 GMTFri, 02 Mar 2007 06:39:34 GMT60jdbc学习(fn)W记http://www.aygfsteel.com/hitlang/articles/71849.htmlliulangliulangMon, 25 Sep 2006 15:06:00 GMThttp://www.aygfsteel.com/hitlang/articles/71849.htmlhttp://www.aygfsteel.com/hitlang/comments/71849.htmlhttp://www.aygfsteel.com/hitlang/articles/71849.html#Feedback0http://www.aygfsteel.com/hitlang/comments/commentRss/71849.htmlhttp://www.aygfsteel.com/hitlang/services/trackbacks/71849.html2004-9-13     星期一     雨

l. q接到数据库的方?br />{:(x)1) ODBC(Open Database Connectivity)
       一个以C语言为基讉KSQL为基数据库引擎的接口Q它提供了一致的接口用于和数据库沟通以?qing)访问数据?br />    2) JDBC
       Java版本的ODBC

2. JDBC应用~程接口
{:(x)JDBC应用~程接口是:(x)
    1) 标准的数据访问接口,可以q到不同的数据库;
    2) JAVA~程语言的一l类和接口?br />    JDBC应用~程接口能够Q?br />    1) q接到数据库;
    2) 发SQL查询字符串到数据?
    3) 处理l果?br />    JDBC应用~程接口有二个主要的部分Q?br />    1) JAVA应用E序开发接口面向JAVA应用E序开发?
    2) JDBC驱动E序开发接?br />   
3. JDBC Driver
{:(x)1) 一大堆实现了JDBCcd接口的类;
    2) 提供了一个实现java.sql.Driver接口的类?/p>

4. JDBC Driver的四U类?br />{:(x)1) JDBC-ODBC?br />    由O(jin)DBC驱动提供JDBC讉K
    2) 本地API
    部分Java driver把JDBC调用转化成本地的客户端API
    3) JDBC-net
    U的Java driverQ将JDBC调用转入DBMSQ与|络协议无关。然后通过服务器将调用转ؓ(f)DBMS协议?br />    4) 本地协议
    U的java driverQ将JDBC调用直接转ؓ(f)DBMS使用的网l协?/p>

5. JDBC开发者接?br />{:(x)1) java.sql--java 2q_下JDBC的主要功能,标准?J2SE)
    2) javax.sql--java 2q_下JDBC增强功能Q企业版(J2EE)

6. 使用URL认数据?br />{:(x)我们使用URL来确定一个数据库(正确的Driver,正确的主?正确的协议,正确的协议,正确的用户名和密?;
    语法Qprotocol:subprotocol:subname
    范例Qjdbc:db2:MyTest
          jdbc:db2://localhost:6789/MyTest

7. javax.sql包JDBC2.0的增强功?br />{:(x)1) 数据源接?
    2) q接?
    3) 分布式交?
    4) 行集;

8. 创徏一个基本的JDBC应用
{:(x)1) 步骤一Q注册一个driver;
    2) 步骤二:(x)建立一个到数据库的q接;
    3) 步骤三:(x)创徏一个statement;
    4) 步骤四:(x)执行SQL语句;
    5) 步骤五:(x)处理l果;
    6) 步骤六:(x)关闭JDBC对象

9. 注册一个Driver(步骤一)
{:(x)1) driver被用于连接到数据?
    2) JDBC应用~程接口使用W一个能成功q接到给定URL的driver;
    3) 在同一旉可以装蝲多个driver

10.注册一个driver的方法:(x)
{:(x)1) 使用cloader(装蝲;实例?注册入DriverManager)
       a. Class.forName("Com.ibm.db2.jdbc.app.DB2Driver");
       b. Class.forName("Com.ibm.db2.jdbc.net.DB2Driver");
       c. Class.forName("Com.microsoft.jdbc.sqlServer.SQLServerDriver);
       d. Class.forName("oracl.jdbc.driver.OracleDriver");
       e. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    2) 实例化一个Driver
       a. Driver drv = new COM.cloudscape.core.RmiJdbcDriver();

2004-9-14     星期二   ??/p>

1. 建立一个到数据库的q接(步骤?
{:(x)DriverManager调用getConnection(urlString)Ҏ(gu)Q实际上调用的是driver的connect(urlString)Ҏ(gu);
    1) 当一个driver肯定地对应到一个数据库URLQDriverManager建立一个连?
    2) 当没有driver匚wQ返回null然后下一个driver被检?
    3) 假如没有建立q接Q抛Z个SQLExcepiton异常

2. l常使用的一些JDBC URL
{:(x)1) JDBC-ODBC: jdbc:odbc:<DB>
    2) Oracle: jdbc:oracle:oci:@<sid> or jdbc:oracle:thin:@<SID>
    3) Weblogic MS-SQL: jdbc:weblogic:mssqlserver4:<DB>@<HOST>:<PORT>
    4) DB2: jdbc:db2:MyTest or jdbc.db2://localhost:6789/MyTest(需要用户名和密?

3. Driverq接Ҏ(gu)
{:(x)1) 创徏一个到指定Driver实例的直接调?
    2) 避免一般访问的问题
       Driver drv = new COM.ibm.db2.jdbc.app.DB2Driver();
       Connection con = null;
       try {con = drv.connect("jdbc:db2:MyTest",new Properties())}
       catch(SQLException e){}

4. 创徏一个Statement(步骤?
{:(x)1) Statement的三个接?
       a. Statement;
       b. PreparedStatement(l承自Statement);
       c. CallableStatement(l承自PreparedStatement);
    2) 使用Ҏ(gu)Connection.createStatement()得到一个Statement对象

5. PreparedStatement对象
{:(x)1) 调用ProparedStatement比statement更ؓ(f)高效;
    2) l承自Statement;
    3) 语法QPreparedStatement pstm = connection.prepareStatement(sqlString);

6. CallableStatement对象
{:(x)1) 通过CallableStatement调用数据库中的存储过E?
    2) l承自PreparedStatement;
    3) CallableStatement cstm = connection.prepareCall("{call return_student[?,?]}");
       cstm.setString(1,"8623034");
       cstm.registerOutparameter(2, Types.REAL);
       cstm.execute();
       float gpa = cstm.getFloat(2);

7. Statement接口的比?br />{:(x)             | Statement           | PreparedStatement         |  CallableStatement
    ------------------------------------------------------------------------------
    写代码位| ?|   客户端          ?| 客户端                  ?|  服务器端
    ------------------------------------------------------------------------------
    写代码位| ?|   客户端          ?| 服务器端                  |  服务器端
    ------------------------------------------------------------------------------
    ~写代码技?|JavaQSQL操作        |JavaQSQL操作              |  数据库的E序语言Q如PL/SQL
    ------------------------------------------------------------------------------
    可配|性   ?|   高              ?|W一ơ高Q以后低           |  ?br />    ------------------------------------------------------------------------------
    可移植性   ?|   高              ?|假设支持PreparedStatement的话高?br />    ------------------------------------------------------------------------------
    传输效率     |   低              ?|W一ơ低Q以后高           |  ?/p>

8. 执行SQL Statement(步骤?
{:(x)通过接口Ҏ(gu)SQL语句传输至黙认的数据库连接,q回l果可能是一个数据表Q可以通过java.sql.ResultSet讉K?br />    1) Statement的接口方法:(x)
    a. executeQuery(sqlString): 执行l定的SQL声明Q返回一个结果集(ResultSet)对象;
    b. executeUpdate(sqlString): 执行l定的SQL声明Q可以是INSERT、UPDATE或DELETE声明Q也可以是SQL DDL声明;
    c. execute(sqlString): 执行l定的SQL声明?/p>

9. 处理l果(步骤?
{:(x)1) 使用l果?ResultSet)对象的访问方法获取数?
       a. next():下一个记?br />       b. first():W一个记?br />       c. last():最后一个记?br />       d. previous():上一个记?br />    2) 通过字段名或索引取得数据
    3) l果集保持了一个指向了当前行的指针Q初始化位置为第一个记录前?/p>

10. 关闭JDBC对象(步骤?
{:(x)1) 首先关闭记录?
    2) 其次关闭声明;
    3) 最后关闭连接对象?/p>

11. 数据表和cd应的三种关系Q?br />{:(x)1) 一个表对应一个类;
    2) 一个表对应相关c?
    3) 一个表对应整个cdpd

12. c间关系的几U表设计Q?br />{:(x)1) 多对一Q?br />    2) 一对一:
    3) 一对多Q?br />    4) 多对多:(x)

13. SQL数据cd?qing)其相应的Java数据cd
{:(x)SQL数据cd                     Java数据cd              说明
    ------------------------------------------------------------------
    INTEGER或者INT                  int                     通常是个32位整?br />    SMALLINT                        short                   通常是个16位整?br />    NUMBER(m,n) DECIMAL(m,n)        Java.sql.Numeric        合计位数是m的定点十q制敎ͼ数后面有n位数
    DEC(m,n)                        Java.sql.Numeric        合计位数是m的定点十q制敎ͼ数后面有n位数
    FLOAT(n)                        double                  q算_ֺ为n位二q制数的点?br />    REAL                            float                   通常?2位QҎ(gu)
    DOUBLE                          double                  通常?4位QҎ(gu)
    CHARACTER(n)或CHAR(n)           String                  长度为n的固定长度字W串
    VARCHAR(n)                      String                  最大长度ؓ(f)n的可变长度字W串
    BOOLEAN                         boolean                 布尔?br />    DATE                            Java.sql.Date           Ҏ(gu)具体讑֤而实现的日历日期
    TIME                            Java.sql.Time           Ҏ(gu)具体讑֤而实现的时戳
    TIMESTAMP                       Java.sql.Timestamp      Ҏ(gu)具体讑֤而实现的当日日期和时?br />    BLOB                            Java.sql.Blob           二进制大型对?br />    CLOB                            Java.sql.Clob           字符大型对象
    ARRAY                           Java.sql.Array
   

2004-9-15     星期三    ??/p>

1. 元数?br />{:(x)关于数据的信息,例如cd或者容量。通过JDBC API可以讉KQ?br />    1) 数据库元数据;
       a. 使用connection.getMetadataҎ(gu)q回DataMetaData引用
       b. 能够使用isReadOnly此类Ҏ(gu)获取信息
    2) l果集元数据;
       a. 使用ResultSet.getMetadataҎ(gu)q回ResultSetMetaData引用
       b. 能够使用getColumnCount此类Ҏ(gu)获取信息

2. 事务处理
{:(x)1) 一pd的动作作Z个不可分的操?
    2) JDBC API中用事务处理步骤:(x)
       a. 用false作ؓ(f)参数调用setAutoCommitҎ(gu);
       b. 执行一或多个关于数据库的操?
       c. 调用commitҎ(gu)完成改变;
       d. 恢复上次提交后的改变Q调用rollbackҎ(gu).

       try
       {
          con.setAutoCommit(false);
          Statement stm = con.createStatement();
          stm.executeUpdate("insert into student(name, age, gpa) values('gzhu', 30, 4.8)");
          stm.commit();
       }
       catch(SQLException e)
       {
          try
          {
             con.rollback();
          }
          catch(Exception e)
          {
          }
       }

3. q发控制
{:(x)1) 讄隔离U别Ҏ(gu)QsetTransactionIsolation
    2) 隔离U别静态变?br />       a. TRANSACTION_NONEQ只ȝ数据字典;
       b. TRANSACTION_READ_UNCOMMITTEDQ只L提交数据;
       c. TRANSACTION_READ_COMMITTEDQ只L提交数据;
       d. TRANSACTION_REPEATABLE_READQ重复读取数?
       e. TRANSACTION_SERIALIZABLEQ无论做什么操作都不许别h动?br />    3) CZQcon.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);

4. JDBC 2.0 应用E序~程接口增强功能
{:(x)1) ResultSet增强Q?br />       a. 可以回卷;
       b. 可以修改;
       讄CZQStatement stm = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    2) Statement增强了批量修改能?batch updates);
    3) 更高U的数据cd(例:(x)Struct)?/p>

5. JDBC 2.0标准扩展
{:(x)1) JNDI(Java Naming and Directory Interface): 解决L状态下Object的查?
    2) q接池:(x)在内存中保存了一个数据库q接Q不需要注册驱动器Q提高性能的重要方法?/p>

 

 

 

 

 

 

 



liulang 2006-09-25 23:06 发表评论
]]>
վ֩ģ壺 ˳ƽ| ʡ| ˮ| | ɽ| Զ| ͺ| ˫| | | Ϣ| | | | Ϫ| | | | ѽ| ˮ| ɽ| Դ| ľ| | ˮ| | | | ˮ| ɽ| ǭ| ɽ| ֶ| ̨| ɽ| | ̨| ʦ| ɽ| Ӣ| |