jsp程序设计入门沈泽刚、秦玉平主编的javaweb第二版第07章JDBC数据库访问.ppt
文本预览下载声明
public void updateString(int columnIndex, String x):用指定的字符串x的值更新当前行指定的列的值,其中columnIndex为列的序号。 public void updateString(String columnName, String x):用指定的字符串x的值更新当前行指定的列的值,其中columnName为列名。 2. 可更新的ResultSet 每个updateXxx()都有两个重载的版本,一个是第一个参数是int类型的,用来指定更新的列号,另一个是第一个参数是String类型的,指定更新的列名。第二个参数的类型与要更新的列的类型一致。有关其他方法请参考API文档。 2. 可更新的ResultSet 下面是通过可更新的ResultSet对象实现对表的插入、删除和修改。 void moveToInsertRow() throws SQLException:将游标移到插入行。要插入一行数据首先应该使用该方法将游标移到插入行。插入行是与可更新结果集相关的特殊行。它实际上是一个在将行插入到结果集之前构建的新行的缓冲区。当游标处于插入行时,调用updateXxx()用相应的数据修改每列的值。完成新行数据修改之后,调用insertRow()将新行插入结果集。。 2. 可更新的ResultSet void insertRow() throws SQLException:插入一行数据。在调用该方法之前,插入行所有的列都必须给定一个值。调用insertRow()之后,这个ResultSet仍然位于插入行。这时,可以插入另外一行数据,或者移回到刚才ResultSet记住的位置(当前行位置)。 void moveToCurrentRow() throws SQLException:返回到当前行。也可以在调用insertRow()之前通过调用moveToCurrentRow()取消插入。 2. 可更新的ResultSet void deleteRow() throws SQLException:从结果集中删除当前行,同时从数据库中将该行删除。 void updateRow() throws SQLException:执行该方法,将用当前行的新内容更新结果集,同时更新数据库。当使用updateXxx()更新了需要更新的所有列之后,调用该方法把更新写入表中。在调用updateRow()之前,如果决定不想更新这行数据,可以调用cancelRowUpdate()取消更新。 2. 可更新的ResultSet 下面代码说明了如何在products表中修改一件商品的名称。 String sql = SELECT prod_id,pname FROM products WHERE prod_id =P2; ResultSet rset = stmt.executeQuery(sql); rset.next(); // 修改当前行的字段值 rset.updateString(2,iPhone 5 手机); rset.updateRow(); // 更新当前行 2. 可更新的ResultSet 7.4 预处理语句 Statement对象在每次执行SQL语句时都将语句传给数据库,这样在多次执行同一个语句时效率较低,这时可以使用PreparedStatement对象。如果数据库支持预编译,它可以将SQL语句传给数据库作预编译,以后每次执行这个SQL语句时,速度就可以提高很多。 PreparedStatement接口继承了Statement接口,因此它可以使用Statement接口中定义的方法。PreparedStatement对象还可以创建带参数的SQL语句,在SQL语句中指出接收哪些参数,然后进行预编译。 7.4.1 创建PreparedStatement对象 创建PreparedStatement对象与创建Statement对象类似,唯一不同的是需要给创建的PreparedStatement对象传递一个SQL命令,即需要将执行的SQL命令传递给其构造方法而不是execute()。用Connection的下列方法创建PreparedStatement对象。 PreparedStatement prepareStatement(String sql):使用给定的SQL命令创建一个PreparedStatement对象,在该对象上返回的ResultSet是只能向前滚动的结果集。 7.4.1 创建PreparedStatement对象
显示全部