提交。
(5) commit() :在链接上提交事务。
(6) rollback() :在此链接上回滚事务。
6、Statement ——向数据库发送SQL语句
Jdbc程序中的Statement对象用于向数据库发送SQL语句, Statement对象常用方法:
(1) executeQuery(String sql) :用于向数据库发送查询语句。
(2) executeUpdate(String sql):用于向数据库发送insert、update或delete语句
(3) execute(String sql):用于向数据库发送任意sql语句
(4) addBatch(String sql) :把多条sql语句放到一个批处理中。
(5) executeBatch():向数据库发送一批sql语句执行。
(6) clearBatch() :清空此 Statement 对象的当前 SQL 命令列表。
7、ResultSet ——代表Sql语句的执行结果
Jdbc程序中的ResultSet用于代表Sql语句的执行结果。Resultset封装执行结果时,采用的类似于表格的方式。ResultSet 对象维护了一个指向表格数据行的游标,初始的时候,游标在第一行之前,调用ResultSet.next() 方法,可以使游标指向具体的数据行,进行调用方法获取该行的数据。
(1) ResultSet提供了对结果集进行滚动的方法:
a、next():移动到下一行
b、Previous():移动到前一行
c、absolute(int row):移动到指定行
d、beforeFirst():移动resultSet的最前面。
e、 afterLast() :移动到resultSet的最后面。
(2) ResultSet既然用于封装执行结果的,所以该对象提供了用于获取数据的get方法:
获取任意类型的数据
getObject(int index)
getObject(string columnName)
获取指定类型的数据,例如:
getString(int index)
getString(String columnName)
其他获取指定类型数据的方法见下表:
常用数据类型转换表:
?

?
8、释放资源 ——释放与数据库进行交互的对象
Jdbc程序运行完后,切记要释放程序在运行过程中,创建的那些与数据库进行交互的对象,这些对象通常是ResultSet, Statement和Connection对象。
特别是Connection对象,它是非常稀有的资源,用完后必须马上释放,如果Connection不能及时、正确的关闭,极易导致
系统宕机。Connection的使用原则是尽量晚创建,尽量早的释放。
为确保资源释放代码能运行,资源释放代码也一定要放在finally语句中。
9、用JDBC对数据库进行CRUD
jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。
Statement对象的executeUpdate方法,用于向数据库发送增、删、改的sql语句,executeUpdate执行完后,将会返回一个int整数(即增删改语句导致了数据库几行数据发生了变化)。
Statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的ResultSet对象。
?
?
public static void main(String[] args) throws SQLException,ClassNotFoundException{
// TODO Auto-generated method stub
String url = "jdbc:mysql://localhost:3306/skyfin";
String username = "root";
String password = "skyfin";
//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection(url,username,password);
Statement stat = connection.createStatement();
/*
* 执行查找操作
*/
ResultSet rsResultSet = stat.executeQuery("select * from user");
while (rsResultSet.next()) {
System.out.println("id = "+ rsResultSet.getObject("id"));
System.out.println("name = "+ rsResultSet.getObject("name"));
System.out.println("password = "+ rsResultSet.getObject("password"));
}
/*
* 执行插入操作
*/
String sql = "insert into user(id,name,password) value(6,"+"'staff'"+","+"'staff'"+")";
System.out.println(sql);
int statentnum = stat.executeUpdate(sql);
if (statentnum>0) {
System.out.println("insert ok");
}
/*
* 执行更新操作
*/
sql = "update user set name = 'skstaff' where name = 'staff'";
System.out.println(sql);
statentnum = stat.executeUpdate(sql);
if (statentnum>0) {
System.out.println("update ok");
}
/*
* 执行删除操作
*/
sql = "delete from user where name = 'skstaff'";
System.out.println(sql);
statentnum = stat.executeUpdate(sql);
if (statentnum>0) {
System.out.println("delete ok");
}
/*
* 资源的释放
*/
rsResultSet.close();
stat.close();
connection.close();
}
10、用JDBC的PreparedStatement启动事务使用批处理executeBa