当获得了与数据库的连接后,就可以与数据库进行交互了。 获取数据库连接,参考上一篇文章。
JDBC中Statement,PreparedStatement和CallableStatement接口定义了可用于发送SQL或PL/SQL命令,并从数据库接收数据的方法和属性。
下表提供了每个接口定义,以及使用这些接口的目的的总结。
表格来源:https://www.yiibai.com/jdbc/jdbc-statements.html
1.PreparedStatement对象
图片来源:https://www.yiibai.com/jdbc/jdbc-statements.html
1.2. 使用PreparedStatement对象进行数据库操作
1.2.1 获取数据库连接
/**
* 获取数据库连接
* @return
*/
public static Connection getConnection(){
Connection connection = null;
Properties info = new Properties();
try {
//***********代码缺陷:每次获取数据库连接时都要读配置文件**************************
info.load(JdbcUtils.class.getClassLoader().
getResourceAsStream("com/conf/properties/jdbc-conf.properties"));
String driverClass = info.getProperty("driverClass");
String jdbcUrl = info.getProperty("jdbcUrl");
String user = info.getProperty("user");
String password = info.getProperty("password");
//*****************************************************************************
Class.forName(driverClass);
connection = DriverManager.getConnection(jdbcUrl,user,password);
if (null == connection){
//log.error("Connection is null.");
return null;
}
} catch (IOException e) {
//log.error("Not found properties file.");
} catch (ClassNotFoundException e) {
//log.error("Not found driver class, load driver failed.");
} catch (SQLException e) {
//log.error("Get connection error.");
}
return connection;
}
1.2.2 preparedStatement执行 Query 操作
/**
* preparedStatement执行 Query 操作
* PreparedStatement接口扩展了Statement接口,它添加了比Statement对象更好一些优点的功能。此语句可以动态地提供/接受参数。
* JDBC中的所有参数都由 ? 符号作为占位符,这被称为参数标记。
* 在执行SQL语句之前,必须为每个参数(占位符)提供值。setXxx()方法将值绑定到参数,其中XXX表示要绑定到输入参数的值的Java数据类型。
* 如果忘记提供绑定值,则将会抛出一个SQLException。每个参数标记是它其顺序位置引用,第一个标记表示位置1,下一个位置2等等。
* 该方法与Java数组索引不同(它不从0开始)。
* 所有Statement对象与数据库交互的方法(a)execute(),(b)executeQuery()和(c)ex