作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个包含两列的表,用于在 SQL 数据库中存储应用程序设置。我的问题是如何通过将 dCreateTime 值更改为负 1 天来更新记录,另外还有两个表可以调用,其中 userID = atest211。我的代码似乎无法正常工作。
我的代码:
public void getEmployeesFromDataBase() {
try {
String query = "update a set a.dCreateTime=a.dCreateTime-1 from tbet a, tuser b where a.iUserKey= b.iUserKey and b.sUserid = 'atest211' and a.dCreateTime> GETDATE()-5";
statement = connection.createStatement();
rs = statement.executeQuery(query);
while (rs.next()) {
int EmpId = rs.getInt("iUserKey");
String EmpName = rs.getString("sUserid");
System.out.println(EmpId + "\t" + EmpName + "\t");
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
我更新的代码,它仍然不能正常工作
public void updateTableData() {
PreparedStatement pstmt = null;
try {
pstmt = connection.prepareStatement("update a set a.dCreateTime=a.dCreateTime-1 from tbet a, tuser b where a.iUserKey= b.iUserKey and b.sUserid = 'atest211' and a.dCreateTime> GETDATE()-5");
pstmt.setString(1, "dCreateTime");
pstmt.setString(2, "atest211");
// To execute update query.
pstmt.executeUpdate();
// Printing all records of user table after updating record.
String query = "select * from tbet";
// Get the contents of user table from DB
ResultSet res = statement.executeQuery(query);
// Print the result untill all the records are printed
// res.next() returns true if there is any next record else returns
// false
while (res.next()) {
System.out.println(String.format("%s - %s - %s - %s ", res.getString(1), res.getString(2),
res.getString(3), res.getString(4)));
}
} catch (Exception e) {
e.printStackTrace();
}
最佳答案
您正在使用带有更新的结果集
,这是不可能的。此外,在您的 while 循环中,您基本上是从数据库中获取值,而不是更新它们。
如果你想更新值,我建议你使用PreparedStatement
。
如果您想让您的代码正常工作,请尝试在您的查询中使用 SELECT
而不是 UPDATE
。
String query = "SELECT a.dCreateTime FROM tbet a, tuser b WHERE a.iUserKey= b.iUserKey and b.sUserid = 'atest211' and a.dCreateTime> GETDATE()-5";
编辑:如果你想使用 PreparedStatement,试试这样的东西
// create the preparedstatement
PreparedStatement ps = conn.prepareStatement(
"UPDATE yourTable SET title = ?, author = ? WHERE id = ?");
ps.setString(1,title);
ps.setString(2,author);
ps.setInt(3,id);
//execute the upate
ps.executeUpdate();
ps.close();
关于java - JDBC - 如何更新日期 -1 的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38303306/
我是一名优秀的程序员,十分优秀!