现在的位置: 首页 > 综合 > 正文

JDBC 介绍(八)

2013年10月18日 ⁄ 综合 ⁄ 共 1255字 ⁄ 字号 评论关闭
ResultSet  More
前几节中我们介绍过利用SQL语句来进行数据库的新增,更新和删除操作,使用executeUpdate()来执行SQL,但是使用excuteUpdate()其实是一个容易出错的动作,如果我们只想针对查询的资料进行一些简单的新增,更新或删除操作,可以有Result的一些方法来执行.
要想使用ResultSet直接进行新增等操作,在建立Statement时必须在createStatement()上指定ResultSet.TYPE_SCROLL_SENSITIVE(或ResultSet.TYPE_SCROLL_INSENSITIVE,如果不想取得更新资料的结果)与ResultSet.CONCUR_UPDATABLE.如
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

假如我们要针对查询结果进行更新操作,先移动游标至想要更新的记录位置,然后使用updateXXX()等方法即可,最后用updateRow()生效操作
ResultSet result=stmt.executeQuery("SELECT * FROM message WHERE name='Michael CHEN'");
result.last();
result.updateString("email",ybugchen@163.com);  //第一个参数字段名称,第二个参数值
result.updateRow();
使用updateXXX()等方法之后,并不会马上对相应字段操作生效,而必须执行完updateRow()方法才会对数据库进行操作,如果在updateRow()前想要取消之前的updateXXX()方法,则可以使用cancelRowUpdates()方法.
如果想要新增记录,则先使用moveToInsertRow()移至新增资料处,指向相应的updateXXX()方法,然后在执行insertRow()即可新增记录.

ResultSet result=stmt.executeQuery("SELECT *FROM message WHERE name='Michael CHEN'");
result.moveInsertRow();
result.updateString("name", "Susan");
result.updateString("email", "Susan@mail.com");
result.updateString("subject", "test");
result.updateString("memo", "This is a test!");

result.insertRow();
result.moveToCurrentRow();
如果想要删除查询的每条记录,将游标移动到该条记录,执行deleteRow()方法
result.last();
result.deleteRow();

抱歉!评论已关闭.