PreparedStatement 是 Statement 的子接口,属于预处理操作,与直接使用 Statement 不同的是,PreparedStatement在操作时,是先在数据表中准备好了一条 SQL 语句,但是此 SQL 语句的具体内容暂时不设置,而是之后再进行设置。
(以后开发一般用 PreparedStatement,不用 Statement)
与上一章讲的Statement类似,只是更加简单,这里直接贴代码并附上注释
使用 PreparedStatement 接口实现添加,更新,删除数据的操作:
package 加载驱动实例;
import java.sql.Connection;
import java.sql.PreparedStatement;
public class Demo2
{
static util util1 = new util();
//增加数据的方法
public static int addDate(_Book book) throws Exception
{
Connection con = util1.getCon(); //获取连接对象
//下面是重点语句,语句中的应该填值的地方,用?暂时填充,它表示的
//意思是这个sql语句先存在,值稍后再传进去
String sql = "insert into t_book values(null,?,?,?);"; //sql语句
PreparedStatement prep = con.prepareStatement(sql); //预处理
//这里就是设置 预先填?的地方
prep.setString(1, book.getBookName()); //设置变量
prep.setInt(2, book.getBookNameId());
prep.setDouble(3, book.getPrice());
int result = prep.executeUpdate();
return result;
}
//更新数据的方法
public static int upDateDate(_Book book) throws Exception
{
Connection con = util1.getCon(); //获取连接对象
String sql = "update t_book set bookName = ?, bookNameId = ?, price = ? where id = ? "; //sql语句
PreparedStatement prep = con.prepareStatement(sql); //预处理
prep.setString(1, book.getBookName()); //设置变量
prep.setInt(2, book.getBookNameId());
prep.setDouble(3, book.getPrice());
prep.setInt(4, book.getId());
int result = prep.executeUpdate();
util1.close(prep, con);
return result;
}
//删除数据的方法
public static int deleteDate(_Book book)throws Exception
{
Connection con = util1.getCon(); //获取连接对象
String sql = "delete from t_book where id = ?; "; //sql语句
PreparedStatement prep = con.prepareStatement(sql); //预处理
prep.setInt(1, book.getId());
int result = prep.executeUpdate();
util1.close(prep, con);
return result;
}
public static void main(String[] args)throws Exception
{
int result ;
_Book book = new _Book("王者三国",3,99.65); //一个图书实例
result = addDate(book); //增加数据
System.out.print(result);
book.setId(5); //设置id
result = upDateDate(book); //更新数据
System.out.print(result);
int result = deleteDate(book); //删除数据
System.out.print(result);
}
}