除了以前发过的mysql的限制 之外,又发现在JDBC编程中的一个限制,代码如下,照说如果按ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE打开记录集,该ResultSet是可以update或insert的,但在mysql里某个表这样操作会抛出Exception,说记录集不能被修改(至少要包含某个主键一类的),于是随便在表上建立个主键就可以了。
没有测试过ADO+MySql的,也没有测试过JDBC+其他数据库。其实对于简单的修改和增加操作,我更倾向于直接调用update/insert SQL语句,而不是打开记录集操作。
public boolean AddOrUpdateCurrPrice(int nPrice) { try { String query = "SELECT * FROM futures_current_price WHERE product=?"; PreparedStatement stmt = oConn .prepareStatement(query, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
stmt.setString(1, sProduct); ResultSet rs = stmt.executeQuery(); boolean bAdd = false; if (rs.last()) { DebugPrint("update"); } else { DebugPrint("add"); rs.moveToInsertRow(); rs.updateString("product", sProduct); bAdd = true; } rs.updateString("expiration", sExpiration); rs.updateInt("price", nPrice); if (bAdd) rs.insertRow(); else rs.updateRow();
rs.close(); stmt.close(); return true; } catch (Exception e) { DebugPrint("FPrice Error " + e.getMessage()); return false; } }
Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved. 闵涛 E_mail:admin@mintao.net(欢迎提供学习资源)
鄂公网安备 42011102001154号
站长:MinTao ICP备案号:鄂ICP备11006601号-18