| 之前要进行新增、更新或删除数据,都必须要撰写SQL,然后使用
executeUpdate()来执SQL,将SQL写在executeUpdate
()之中,其实是一件麻烦又容易出错的动作,如果您只是想要针对查询到的数据进行一些简单的新增、更新或删除数据,您可以藉由ResultSet的一些方法
来执行,而不一定要撰写SQL并执行。 想要使用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='caterpillar'"); result.last(); result.updateString("name", "justin"); result.updateString("email", "justin@mail.com"); result.updateRow(); 使用updateXXX()等方法之后,并不会马上对数据库生效,而必须执行完updateRow()方法才会对数据库进行操作,如果在 updateRow()前想要取消之前的updateXXX()方法,则可以使用cancelRowUpdates()方法取消。 如果想要新增数据,则先使用moveToInsertRow()移至新增数据处,执行相对的updateXXX()方法,然后再执行insertRow ()即可新增数据,例如: ResultSet result = stmt.executeQuery(
"SELECT * FROM message WHERE name='caterpillar'"); result.moveToInsertRow(); result.updateString("name", "caterpillar"); result.updateString("email", "caterpillar@mail.com"); result.updateString("subject", "test"); result.updateString("memo", "This is a test!"); result.insertRow(); 如果想要删除查询到的某笔数据,则可以将游标移至该笔数据,然后执行deleteRow()方法即可: ResultSet result = stmt.executeQuery(
"SELECT * FROM message WHERE name='caterpillar'"); result.last(); result.deleteRow(); |