一、用法:
PreparedStatement是Statement的子接口,Statement在使用的过程中,直接拼写SQL是很容易出错的且难用的,PreparedStatement带有模版的思想,减少了出错的机率。
1、写sql模版,并和PreparedStatement绑定
String sqlsqlTemplate= "insert emp VALUE (?,?,?)";
PreparedStatement pstmt = con.prepareStatement(sqlsqlTemplate);
2、依次设置模版中??所带表的值
pstmt.setInt(1,9); //第一个参数,表示设置第几个值
pstmt.setString (2,"yangli");
pstmt.setInt(3,30);
3、执行
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
try {
Class.forName(driver);
con = DriverManager.getConnection(url,user,password);
if(!con.isClosed())
String sqlTemplate = "insert emp VALUE (?,?,?)";
PreparedStatement pstmt = con.prepareStatement(sqlTemplate);
pstmt.setInt(1,9); //插入第n个数
pstmt.setString (2,"yangli");
pstmt.setInt(3,30);
int rs = pstmt.executeUpdate();
pstmt.clase();
con.close();
} catch (ClassNotFoundException e) {
System.out.println("数据库数据异常"+e.toString());
e.printStackTrace();
} catch (SQLException e) {
System.out.println("数据库数据异常"+e.toString());
e.printStackTrace();
}finally {
System.out.println("数据库数据成功获取");
}
二、和Statement的区别
1、PreparedStatement可以使用占位符,是预编译的,批处理比Statement效率高;
2、PreparedStatement和sql模板绑定,最后执行的时候,不再有sql语句