【发布时间】:2013-09-19 11:32:07
【问题描述】:
在我的 java 应用程序中,我试图更新一些具有长日期值的行。我在下面粘贴了我的代码。这里的表名是"CASHSELL" 列是"DATE VARCHAR(20) 和"DATES BIGINT"。
String query = "SELECT DATE, DATES FROM CASHSELL";
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
try{
conn = new connection().db();
stmtt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs = stmtt.executeQuery(query);
while (rs.next()){
String dat = rs.getString("DATE");
Date d = (Date) sdf.parse(dat);
long longDate = d.getTime();
rs.updateLong("DATES", longDate);
rs.updateRow();
conn.commit();
}
}
catch(SQLException | ParseException ex){JOptionPane.showMessageDialog(null, ex);
}
finally{try{rs.close(); conn.close(); stmtt.close();}catch(SQLException ex){} }
这个方法不管用。我在这里犯了什么错误?也没有错误信息?我错过了什么吗?或者它不是使用 JDBC 更新的正确方法?有没有其他方法,让我可以通过将字符串日期转换为长日期来更新 1,00,000 行?
我在 Derby 数据库中工作。
【问题讨论】:
-
“不工作”含糊不清——这是怎么回事?您确定格式真的是“dd-MM-yyyy”而不是更常见的“yyyy-MM-dd”吗?
-
你说要更新一些长日期的行,但我没有看到你的查询中的 where 子句。所以所有行都会受到影响
-
我必须用不同的值更新所有行。我认为“rs.updateRow()”更新了一行。所以,我试图在循环中执行查询。