关于JDBC的使用

1、Connection conn = ConnectionUtil.getConnection();

 setAutoCommit(boolean autoCommit)
 
 将此连接的自动提交模式设置为给定状态。如果连接处于自动提交模式下,则将执行其所有 SQL 语句,
 并将这些语句作为单独的事务提交。否则,其 SQL 语句将成组地进入通过调用 commit 方法或 rollback
 方法终止的事务中。默认情况下,新的连接处于自动提交模式下。为保证事务完整,建议设置为false。

2、Statement,PreparedStatement(是Statement的子类) 创建

//     conn.prepareStatement(sql,游标类型,能否更新记录);
//     conn.createStatement(游标类型,能否更新记录);
//      游标类型:
//       ResultSet.TYPE_FORWORD_ONLY:只进游标
//       ResultSet.TYPE_SCROLL_INSENSITIVE:可滚动。但是不受其他用户对数据库更改的影响。
//       ResultSet.TYPE_SCROLL_SENSITIVE:可滚动。当其他用户更改数据库时这个记录也会改变。
//      能否更新记录:
//       ResultSet.CONCUR_READ_ONLY,只读
//       ResultSet.CONCUR_UPDATABLE,可更新

3、Statement,PreparedStatement 执行SQL

 3.1、Statement
 
  3.1.1、单一SQL语句
  
   Statement ps1 = conn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
   
   ResultSet rs1 = ps1.executeQuery("select * from area");
   
   int rs1 = ps1.executeUpdate("delete from area");
   int rs1 = ps1.executeUpdate("insert into area(id,name,phone) values(12, 'me', '67183662')");
   int rs1 = ps1.executeUpdate("update area set name='you'");
   int rs1 = ps1.executeUpdate("CREATE TABLE products ( PROD_ID NUMBER(4), PROD_NAME VAECHAR2(20), STOCK_QTY NUMBER(5,3) )");
   
  3.1.2、批处理SQL语句(非查询)
  
   Statement ps1 = conn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
   
   ps1.addBatch("delete from area");
   ps1.addBatch("insert into area(id,name,phone) values(12, 'me', '67183662')");
   ps1.addBatch("update area set name='you'");
   ps1.addBatch("CREATE TABLE products ( PROD_ID NUMBER(4), PROD_NAME VAECHAR2(20), STOCK_QTY NUMBER(5,3) )");
   
   int[] rs1 = ps1.executeBatch();
   
  3.1.3、commit()提交事务 
   
 3.2、PreparedStatement
 
  3.2.1、单一SQL语句
  
   PreparedStatement pstmt=conn2.prepareStatement("select * from tbcity where code=?");
   pstmt.setInt(1,code);
   ResultSet rs = pstmt.executeQuery();
  
   PreparedStatement pstmt=conn2.prepareStatement("insert into tbcity(code,name,parentid,type) values (?,?,?,?)");
   pstmt.setInt(1,code);
     pstmt.setString(2, name);
     pstmt.setInt(3,parentid);
     pstmt.setInt(4, 3);
     int rs = pstmt.executeUpdate();
    
     PreparedStatement pstmt=conn2.prepareStatement("delete from area where code=?");
   pstmt.setInt(1,12);
     int rs = pstmt.executeUpdate();
    
     PreparedStatement pstmt=conn2.prepareStatement("update area set name=?");
   pstmt.setString(1, "me");
     int rs = pstmt.executeUpdate();
    
     PreparedStatement pstmt=conn2.prepareStatement("CREATE TABLE products ( PROD_ID NUMBER(4), PROD_NAME VAECHAR2(20), STOCK_QTY NUMBER(5,3) )");
     int rs = pstmt.executeUpdate();
    
   3.2.2、批处理SQL语句(非查询)
  
    PreparedStatement pstmt=conn2.prepareStatement("insert into tbcity(code,name,parentid,type) values (?,?,?,?)");
    while(判断条件){
     pstmt.setInt(1,code);
      pstmt.setString(2, name);
      pstmt.setInt(3,parentid);
      pstmt.setInt(4, 3);
      pstmt.addBatch();
    }
    pstmt.executeBatch(); 
  
  3.2.3、commit()提交事务 
    
 3.3、查询语句结果的处理
  
   public boolean previous() 将游标向上移动,该方法返回boolean型数据,当移到结果集第一行之前时,返回false。
   
   public void beforeFirst 将游标移动到结果集的初始位置,即在第一行之前。
   
   public void afterLast() 将游标移到结果集最后一行之后。
   
   public void first() 将游标移到结果集的第一行。
   
   public void last() 将游标移到结果集的最后一行。
   
   public boolean isAfterLast() 判断游标是否在最后一行之后。
   
   public boolean isBeforeFirst() 判断游标是否在第一行之前。
   
   public boolean ifFirst() 判断游标是否指向结果集的第一行。
   
   public boolean isLast() 判断游标是否指向结果集的最后一行。
   
   public int getRow() 得到当前游标所指向行的行号,行号从1开始,如果结果集没有行,返回0。
   
   public boolean absolute(int row) 将游标移到参数row指定的行号。如果row取负值,就是倒数的行数,absolute(-1)表示移到最后一行,absolute(-2)表示移到倒数第2行。当移动到第一行前面或最后一行的后面时,该方法返回false

4、请在处理完数据查询之后

 在finally中关闭 ResultSet,PreparedStatement,Statement,Connection 并把它们置为null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值