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

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;
  }
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值