一. DriverManager 接口
DriverManager 数据库连接驱动接口,用于获取数据库连接对象Connection
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DriverManagerDemo { public static void main(String[] args) { // 数据库连接引用变量 Connection conn = null; // 加载数据库驱动程序 try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } try { // 获取数据库连接对象 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbctest", "root", "1234"); } catch (SQLException e) { e.printStackTrace(); } } }
DBUtil工具类
DBUtil用于封装数据库连接和关闭,简化JDBC开发,提高代码复用性。
import java.io.FileReader; import java.io.Reader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; /** 动态获取数据库连接参数 */ public class DBUtil { private static String driver; private static String url; private static String username; private static String password; // 静态代码块,初始化成员变量 static { Properties prop = new Properties(); Reader in; try { in = new FileReader("src\\dbconfig.properties"); // 从输入流中加载配置文件 prop.load(in); } catch (Exception e) { e.printStackTrace(); } driver = prop.getProperty("driver"); url = prop.getProperty("url"); username = prop.getProperty("username"); password = prop.getProperty("password"); } // 获得一个数据库连接 public static Connection open() { try { Class.forName(driver); return DriverManager.getConnection(url, username, password); } catch (Exception e) { e.printStackTrace(); } // 抛出异常,方法返回null return null; } // 关闭数据库连接 public static void close(Connection conn) { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
二. Connection接口
数据库连接接口,用于生成Statement和PreparedStatement对象,以及执行Transaction
三. Statement接口和PreparedStatement接口
Statement用于执行静态sql语句以及处理返回结果
import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class StatementDemo { public static void main(String[] args) { String sql = "update from CustomerTb1 set name=? where id=?"; Connection conn = DBUtil.open(); // 获取数据库连接 // 生成Statement对象用于执行sql语句 try { Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); // 执行查询,返回结果集 while (rs.next()) { int id = rs.getInt(1); String name = rs.getString(2); String email = rs.getString("email"); System.out.println(id + ", " + name + ", " + email); } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn); } } }
PreparedStatement是预定义sql语句,用于动态生成sql与执行sql语句
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class StatementDemo { public static void main(String[] args) { String sql = "update CustomerTb1 set name=? where id=?"; Connection conn = DBUtil.open(); // 获取数据库连接 /** 预定义sql语句,?为占位符,在运行中动态生成sql语句 */ try { PreparedStatement pstmt = conn.prepareStatement(sql); // 对占位符替换赋值 pstmt.setString(1, "gepeng"); pstmt.setInt(2, 3); pstmt.executeUpdate(); // 执行更新 } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn); } } }