在开发JDBC程序前,先了解一下JDBC常用的API。JDBC API主要位于java.sql包中,该包定义了一系列访问数据库的接口和类。 (1)Driver接口 Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。需要注意的是,在编写JDBC程序时,必须要把所使用的数据库驱动程序或类库加载到项目的classpath中(这里指MySQL驱动JAR包)。
(2)DriverManager接口 DriverManager接口用于加载JDBC驱动、创建与数据库的连接。在DriverManager接口中,定义了两个比较重要的静态方法
(3)Connection接口 Connection接口用于处理与特定数据库的连接,Connection对象是表示数据库连接的对象,只有获得该连接对象,才能访问并操作数据库。Connection接口的常用方法如下表。
(4)Statement接口 Statement接口用于执行静态的SQL语句,并返回一个结果对象。Statement接口对象可以通过Connection实例的createStatement()方法获得,该对象会把静态的SQL语句发送到数据库中编译执行,然后返回数据库的处理结果。
Statement接口提供了3个常用的执行SQL语句的方法。
(5)PreparedStatement 接口 Statement接口封装了JDBC执行SQL语句的方法,可以完成Java程序执行SQL语句的操作。然而在实际开发过程中往往需要将程序中的变量作为SQL语句的查询条件,而使用Statement接口操作这些SQL语句会过于繁琐,并且存在安全方面的问题。针对这一问题,JDBC API 提供了扩展的PreparedStatement接口。
PreparedStatement是Statement的子接口,用于执行预编译的SQL语句。PreparedStatement接口扩展了带有参数SQL语句的执行操作,该接口中的SQL语句可以使用占位符“?”代替参数,然后通过setter()方法为SQL语句的参数赋值。
PreparedStatement接口提供了一些常用方法,如下表。
通过setter()方法为SQL语句中的参数赋值时,可以通过已定义的SQL类型参数兼容输入参数。例如,如果参数具有的SQL类型为Integer,那么应该使用setInt()方法或setObject()方法设置多种类型的输入参数,具体示例如下所示: String sql = "INSERT INTO users(id,name,email) VALUES(?,?,?)"; PreparedStatement preStmt = conn.prepareStatement(sql); preStmt.setInt(1, 1); //使用参数的已定义SQL类型 preStmt.setString(2, "zhangsan"); //使用参数的已定义SQL类型 preStmt.setObject(3, "zs@sina.com"); //使用setObject()方法设置参数 preStmt.executeUpdate();