日期:2014-05-16  浏览次数:20541 次

数据库连接2

1、回顾 JDBC 的基本操作
(1)加载驱动 Class.forName("com.mysql.jdbc.Driver");
(2)创建数据库连接
   Connection conn=DriverManager.getConnection(url,user,password);
(3)得到发送 SQL 语句的 Statement 对象
       Statement stmt = conn.createStatement();
(4)执行 SQL
   int row = stmt.executeUpdate(sql); //增删改
   ResultSet rs = stmt.executeQuery(sql);//查询
(5)处理结果
       while(rs.next()){  //移动结果集表格中的指针
       rs.getInt("列名");
   rs.getString("time");  //time 在数据库中是 date|datetime
   //类型,从结果集取值是,可以看做字符类型
   } 
(6)关闭所有打开的连接

2、掌握 PreparedStatement 预编译 SQL 语句处理
   java.sql.Statement 是一个基本的发送 SQL 语句的对象,
基本功能就是把 SQL 语句发送给数据库。
      Statement
    |
   PreparedStatement(继承自 Statemtent,扩展)
  
   在项目开发中,一个数据库访问类中,可能多个方法使用
同一句 SQL 语句,需要把 SQL 语句定义成 “成员变量”
  String sql = "insert into student(name,age) values(?,?)";

  这样的 SQL 语句,必须使用  PreparedStatement 来进行处理。
 
  使用 PreparedStatement 步骤:
  (1)新建一个带 ?  不定值的 SQL 语句
  (2)在数据库执行方法中,
  PreparedStatement stmt = conn.prepareStatement(sql2);
  (3)使用 stmt 对 SQL 语句中的 ? 赋值
    stmt.setXXXX(index,value); //选择合适的方法、注意?的位置
  (4)其他的执行方法与 Statement 对象一样。

3、了解 JDBC 中的事务处理
    原子性、一致性、持久性、隔离性

在 JDBC 代码中,同样允许同一个方法中,同时执行 多条
SQL 语句,这几条 SQL 语句是一个整体,要么都执行成功,
要么都执行失败。

//启动事务处理
conn.setAutoCommit(false);

//执行多条 SQL 语句

//把多条 SQL 语句作为整体发送给数据库
conn.commit();

try {
//执行失败,回滚事务
conn.rollback();
} catch (SQLException e1) {
      System.out.println("程序错误,转账失败");
  e1.printStackTrace();
}

4、总结 JDBC API 结构


5、了解项目中如何使用 JDBC 进行编程
   对得到数据库连接对象以及关闭对象的代码进行重构。
   原则:让专门的类做专门的事情。
  
   建立专门的数据库连接对象的创建类--数据库连接工厂类
  

附录:
  操作系统的时间  java.util.Date
  数据库中的时间  java.sql.Date
 
  //两个时间有同样的起点,可以把各自转化为 距起始时间的
  //毫秒数后,直接转化
  java.util.Date dt = new java.util.Date();
  java.sql.Date dt2 = new java.sql.Date(dt.getTime());