除了以前发过的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;
}
}