任何一种数据库驱动程序都提供一个 java.sql.Driver
接口的驱动类,在加载某个数据库驱动程序的驱动类时,都创建自己的实例对象并向 java.sql.DriverMange
类注册该实例对象。
java.sql.DriverManger
类是 JDBC 的管理层,它负责管理 JDBC 驱动程序的基本服务。
DriverManger 注册的方式有以下两种:
加载驱动类并在 DriverManger 类中注册后,即可用来与数据库建立连接,使用getConnection
方法调用。
java.sql.Connection
接口表示与特定数据库的连接,并在连接的上下文中可以执行 SQL 语句并返回结果。并通过 Connection 类对象的 close() 方法将连接关闭。
执行 executeUpdate()方法或executeQuery(String sql)时,会抛出 SQLException 类型的异常,所以需要通过try-catch 进行捕捉。
处理静态的 SQL 语句主要分为3种 Statement 对象:Statement, PreparedStatement, CallableStatement。
createStatement()
方法进行创建。
Connection con = DriverManger.getConnection(url, "sa", ""); //取得数据库连接 Statement stmt = con.createStatement(); //获取Statement 对象该语句为每一个参数保留一个问号 (?) 作为占位符。每个问号的值必须在该语句执行之前,通过适当的 setXXX() 方法来提供。
举个栗子:
// 创建 PreparedStatement 对象
PreparedStatement psmt = con.prepareStatement("update my_table set m = ? where x = ?");
//传递多参数
pstmt.setString(1, "a");
pstmt.setString(2, "b");
registerOutParameter()
方法来完成的。
CallableStatement cstmt = con.prepareCall("{call getTestData(?, ?)}"); //调用存储过程 cstmt.registerOutParameter(1, java.sql.Types.TINYINT); //向问号传递参数 cstmt.registerOutParameter(2, java.sql.Types.DECIMAL, 3); //向问号传递参数 cstmt.executeQuery(); //执行存储过程 byte x = cstmt.getByte(1); java.math.BigDecimal n = cstmt.getBigDeciaml(2,3);