API
DriverManager
注册驱动
Class.forName(“com.mysql.jdbc.Driver”);//不写也行 默认写上了
获取数据库连接
Connection conn = DriverManager.getConnection(url, user, password);//用连接池获取连接效率更高
Connection
获取SQL对象
Statement stmt = conn.createStatement();//获取SQL对象
管理事务
try {
// 开启事务
conn.setAutoCommit(false);
// 执行SQL
// 提交事务
conn.commit();
} catch (Exception tb) {
// 回滚事务
conn.rollback();
tb.printStackTrace();
}
Statement
执行SQL语句
// 1. 执行增删改语句
int count = stmt.executeUpdate(sql);
// 2. 执行查询语句
ResultSet rs = stmt.executeQuery();
ResultSet
封装查询结果
// 1. 判断是否有下一条数据
rs.next();
// 2. 获取字段的数据
rs.getXxx(字段名);
PreparedStatement
防SQL注入、预编译
// SQL注入是由字符串的拼接引起的 为了防止SQL注入 不再使用字符串拼接 改用?代替 之后在设置?的值
String sql = "select * from tb_user where username = ? and password = ?";
// 获取pstmt对象
PreparedStatement pstmt = conn.prepareStatement(sql);
// 设置?的值
pstmt.setString(1, userName);//参数1:问号的序号 参数2:设置的值
pstmt.setString(2, password);
预编译功能需要手动开启
//在连接数据库url时,开启预编译功能 useServerPrepStmts=true
url=jdbc:mysql:///db1?useSSL=false & useServerPrepStmts=true;
数据库连接池
// 加载配置
Properties prop = new Properties();
prop.load(new FileInputStream("jdbc_demo/src/druid.properties"));
// 连接数据库
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
Connection conn = dataSource.getConnection();