码迷,mamicode.com
首页 > 数据库 > 详细

JAVA数据库基本操作 (转)

时间:2015-07-27 18:34:28      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

 

JAVA数据库基本操作指南

 

 

Java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接。

一、取得数据库连接

1、用DriverManager取数据库连接

例子:

         
   

    String     className,url,uid,pwd;
        className = "oracle.jdbc.driver.OracleDriver";
      url =     "jdbc:oracle:thin:@127.0.0.1:1521:orasvr;
      uid = "system";
      pwd = "manager";
      Class.forName(className);
      Connection cn =     DriverManager.getConnection(url,uid,pwd);

   

2、用jndi(java的命名和目录服务)方式

例子:

         
   

  String jndi = "jdbc/db";
      Context ctx = (Context) new     InitialContext().lookup("java:comp/env");
      DataSource ds = (DataSource) ctx.lookup(jndi);
      Connection cn = ds.getConnection();

   

多用于jsp中。

二、执行sql语句

1、用Statement来执行sql语句

         
   

  String sql;
      Statement sm = cn.createStatement();
      sm.executeQuery(sql); // 执行数据查询语句(select)
      sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)

   

        statement.close();

   

2、用PreparedStatement来执行sql语句

         
   

  String sql;
      sql = "insert into user (id,name) values     (?,?)";
      PreparedStatement ps = cn.prepareStatement(sql);
      ps.setInt(1,xxx);
      ps.setString(2,xxx);
      ...
      ResultSet rs = ps.executeQuery(); // 查询
      int c = ps.executeUpdate(); // 更新

   

三、处理执行结果

查询语句,返回记录集ResultSet。

更新语句,返回数字,表示该更新影响的记录数

ResultSet的方法

(1)next(),将游标往后移动一行,如果成功返回true;否则返回false

(2)getInt("id")或getSting("name"),返回当前游标下某个字段的值

四、释放连接

         
   

  cn.close();

   

一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection。

(一)可滚动、更新的记录集

1、创建可滚动、更新的Statement

         
   

  Statement sm =     cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,

   

          ResultSet.CONCUR_READ_ONLY);

   

该Statement取得的ResultSet就是可滚动的

2、创建PreparedStatement时指定参数

         
   

  PreparedStatemet ps =     cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,

   

         ResultSet.CONCUR_READ_ONLY);

   

  ResultSet.absolute(9000);

   

#p#

(二)批量更新

1、Statement

         
   

  Statement sm =     cn.createStatement();
      sm.addBatch(sql1);
      sm.addBatch(sql2);
      ...
      sm.executeBatch()

   

一个Statement对象,可以执行多个sql语句以后,批量更新。这多个语句可以是delete、update、insert等或兼有

2、PreparedStatement

         
   

  PreparedStatement ps =     cn.preparedStatement(sql);
      {
      ps.setXXX(1,xxx);
      ...
      ps.addBatch();
      }
      ps.executeBatch();

   

一个PreparedStatement,可以把一个sql语句,变换参数多次执行,一次更新。

(三)事务的处理

1、关闭Connection的自动提交

         
   

  cn.setAutoCommit(false);

   

2、执行一系列sql语句

要点:执行每一个新的sql语句前,上一次执行sql语句的Statement(或者PreparedStatemet)必须先close

         
   

  Statement sm ;
      sm = cn.createStatement(insert into user...);
      sm.executeUpdate();
      sm.close();
      sm = cn.createStatement("insert into     corp...);
      sm.executeUpdate();
      sm.close();

   

3、提交

         
   

  cn.commit();

   

4、如果发生异常,那么回滚

         
   

  cn.rollback();

   

 

 

 

JAVA数据库基本操作 (转)

标签:

原文地址:http://www.cnblogs.com/Crysta1/p/4680444.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!