数据库连接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());