jdbc编程步骤

来源:互联网 发布:linux uniq命令详解 编辑:程序博客网 时间:2024/05/17 20:57
第一步:注册一个Driver   

      所谓注册驱动本质上就是要加载Driver接口的具体实现类。完成这个功能有三种方式:
     方式一(重点):   
        Class.forName(“oracle.jdbc.OracleDriver”);
     方式二(了解):
        Driver drv = newOracle.jdbc.driver.OracleDriver();
        DriverManager.registerDriver(drv);
     方式三(了解):编译时在虚拟机中加载驱动  
        javac –Djdbc.drivers=
                  oracle.jdbc.driver.OracleDriver xxx.java
        java –D jdbc.drivers=驱动全名 类名
        使用系统属性名,加载驱动 -D 表示为系统属性赋值

第二步:获取数据库连接(Connection)

Connection conn=
      DriverManager.getConnection(url,username,password);
url:指明所要连接的数据资源所在的位置信息。不同的数据库有  
           不同的写法,例如:    
        oracle数据库 --》 jdbc:oracle:thin:@ip:1521:SID 。
       其中jdbc:oracle:thin称为协议(thin是指Oracle的驱动类型Type IV); ip则是数据库服务器所在的主机的ip地址;端口默认是1521;SID通俗的讲是指数据库的名字,不同版本的oracle软件SID可能有所不同
username:用户名
password:密码

第三步:创建Statement

   Statement  stm = conn.createStatement();

         Statement 接口代表了一个数据库的状态,实际负责将需要执行的Sql命令由java客户端传送给数据库服务器执行,以实现对数据库的操作。可以将其看做是一个sql命令的传送工具。

第四步:通过Statement执行Sql语句

在Statement接口里有三个类似的执行方法:
    1)Statement.execute(sql):可以用来执行任意SQL命令。方法返回值为
          boolean值,表示所执行的sql是否有结果集返回。true代表有结果集返回。
         注意:虽然可以执行所有sql,但一般主要用来执行DDL DCL语句。

    2)Statement.executeUpdate(sql):只用来执行INSERT UPDATE和DELETE命
          令。方法返 回值是一个int值,表示sql命令执行后影响的记录数。
         强调:返回值的作用,经常用来判断实际更新值是否与预期更新值相符

    3)Statement.executeQuery(sql):只用来执行SELECT查询命令。方法返回值
         是ResultSet接口类型对象,代表查询结果。如果想得到具体数据,需要解析
          结果集对象.
第五步:处理结果集ResultSet

ResultSet 接口是查询结果集接口,它对返回的结果集进行处理。ResultSet 是程序员进行JDBC 操作的必需接口。
遍历结果集(ResultSet)的方法:

    1)resultSet.next():在结果集里,游标(Cursor)由来指向所要遍历的记录。最开始游标(Cursor)指向所有查询结果的最上方。当调用rs.next()返回为true时表示有下一条记录,并会将游标移至下一条记录;当调用rs.next()返回为false表示已经遍历至结果集的末尾。
    注意:无论结果集里是否有数据,都要至少调用一次next(),确保指针下移。否则运行时,会出现异常。
    2)resultSet.get**():取得某一列值
          当指针移动到正确的记录行后,我们就可以获取当前行数据了。可以根据该列的数据类型调用相应的get[TYPE]方法取得该列的值。例如:如果需要获取第二个字段的字符串值则我们可以调用String str = resultSet.getString(2);    
遍历ResultSet需要注意的问题:
尽可能使用列名代替*。
当已知查询返回单条记录时使用if(rs.next())即可,查询返回多条记录时使用while(rs.next())遍历结果集
rs.getString(1)效果等价于rs.getString("username")
如果数字类型列里数据库中保存值为NULL,JDBC实际会自动在get时将此列转换为0,可以使用rs.wasNull()来判断最近执行的一次get操作是否返回的是NULL值
在开发对运算结果精度要求较高的应用(如金融,银行)时,避免使用double,float,应转用BigDecimal。

第六步:关闭数据库连接(释放资源)
   rs.close(); sta.close(); con.close();

注意:
          ResultSet Statement Connection 是依次依赖的,要按先ResultSet结果集,后Statement,最后Connection的顺序关闭资源,因为Statement和 ResultSet 是需要连接时才可以使用的,所以在使用结束之后有可能其它的 Statement 还需要连接,所以不能现关闭 Connection。



0 0
原创粉丝点击