MYSQL+JDBC,主键对可写记录集的必要性

类别:Java 点击:0 评论:0 推荐:
MYSQL+JDBC,主键对可写记录集的必要性

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

本文地址:http://com.8s8s.com/it/it12072.htm