一、JDBC工具类中的代码
package cn.itcast.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* Jdbc工具类
*/
public final class JdbcUtils {
//省略localhost:3306
private static String url = "jdbc:mysql:///jdbc";
private static String username = "root";
private static String password = "root";
/**
* 构造器私用,防止直接创建对象,
* 当然通过反射可以创建
*/
private JdbcUtils(){
}
//保证只是注册一次驱动
static{
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new ExceptionInInitializerError(e);
}
}
/**
* 获取连接
* @return
* @throws SQLException
*/
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, username, password);
}
/**
* 释放资源
*/
public static void free(ResultSet rs, Statement st, Connection conn) {
//规范的关系连接的方式
try{
if(rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try{
if(st != null) {
st.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
二、测试类中的代码
package cn.itcast.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 对数据库的Crud操作
*/
public class Crud {
public static void main(String[] args) throws SQLException {
//create();
//read();
//update();
delete();
}
static void delete() throws SQLException {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try{
//创建连接
conn = JdbcUtils.getConnection();
//创建语句
st = conn.createStatement();
String sql = "delete from user where id>4";
//执行操作
int i = st.executeUpdate(sql);
}finally{
JdbcUtils.free(rs, st, conn);
}
}
/**
* 更新操作
* @throws SQLException
*/
static void update() throws SQLException {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try{
//建立连接
conn = JdbcUtils.getConnection();
//创建语句
st = conn.createStatement();
String sql = "update user set money=money+10";
//执行语句
int i = st.executeUpdate(sql);
System.out.println("i=" + 1);
}finally {
JdbcUtils.free(rs, st, conn);
}
}
/**
* 插入语句
* @throws SQLException
*/
static void create() throws SQLException {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try{
//建立连接
conn = JdbcUtils.getConnection();
//创建语句
st = conn.createStatement();
String sql = "insert into user(name, birthday, money) values('name1', '1987-01-01', 400)";
//执行语句
int i = st.executeUpdate(sql);
System.out.println("i=" + i);
} finally {
JdbcUtils.free(rs, st, conn);
}
}
/**
* 读取操作
* @throws SQLException
*/
static void read() throws SQLException {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try{
//建立连接
conn = JdbcUtils.getConnection();
//创建语句
st = conn.createStatement();
//执行语句
rs = st.executeQuery("select id, name, money, birthday from user");
//处理结果,根据列名去拿结果
while(rs.next()) {
System.out.println(rs.getObject("id") + "\t"
+ rs.getObject("name") + "\t"
+ rs.getObject("birthday") + "\t"
+ rs.getObject("money"));
}
} finally {
JdbcUtils.free(rs, st, conn);
}
}
}
CRUD总结:
1、增、删、改用Statement.executeUpdate来完成,返回整数(匹配的记录数),这类操作相对简单。
2、查询用Statement.executeQuery来完成,返回的是ResultSet对象,ResultSet中包含了查询的结果;查询相对与增、删、改要复杂一些,因为有查询结果要处理。