PreparedStatement.setTimestamp 没有将时间戳插入数据库
PreparedStatement.setTimestamp is not inserting Timestamp into DB
我正在开发帐户管理系统。目标是将试用期设置到数据库中。我正在从 jsonObject
获取 Timestamp "2015-10-30 22:55:48"
到 REST 服务中,并使用准备好的语句插入到数据库中。但是每次我得到 effected rows 0
并且意味着更新操作没有执行!
我试过以下一段代码,包括解析和转换:
JSONParser parser = new JSONParser();
Object obj = parser.parse(requestBody);
JSONObject jsonObject = (JSONObject) obj;
String accountExpiryStr = jsonObject.get("accountExpiry").toString();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date parsedDate = dateFormat.parse(accountExpiryStr);
Timestamp accountExpiry = new Timestamp(parsedDate.getTime()); // accountExpiry output is 2015-10-30 22:55:48.0
String requestQuery = "UPDATE table SET Account_Expiry = ?"
+ "WHERE Account_Id = ? "
+ "AND User_Id = ? ";
preparedStatement = con.prepareStatement(requestQuery);
preparedStatement.setTimestamp(1, accountExpiry);
preparedStatement.setInt(2, Integer.parseInt((String) jsonObject.get("selectedUserId")));
preparedStatement.setInt(3, Integer.parseInt((String) jsonObject.get("accountId")));
rowCount = preparedStatement.executeUpdate();
System.out.println("Effected Rows: " + rowCount);
Affected rows = 0
表示 UPDATE 的 where 子句不匹配您 table 中的任何记录。所以你应该首先检查where子句是否正确。
您似乎已经切换了用户 ID 和帐户 ID...
而是写:
preparedStatement.setInt(2, Integer.parseInt((String) jsonObject.get("accountId")));
preparedStatement.setInt(3, Integer.parseInt((String) jsonObject.get("selectedUserId")));
我正在开发帐户管理系统。目标是将试用期设置到数据库中。我正在从 jsonObject
获取 Timestamp "2015-10-30 22:55:48"
到 REST 服务中,并使用准备好的语句插入到数据库中。但是每次我得到 effected rows 0
并且意味着更新操作没有执行!
我试过以下一段代码,包括解析和转换:
JSONParser parser = new JSONParser();
Object obj = parser.parse(requestBody);
JSONObject jsonObject = (JSONObject) obj;
String accountExpiryStr = jsonObject.get("accountExpiry").toString();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date parsedDate = dateFormat.parse(accountExpiryStr);
Timestamp accountExpiry = new Timestamp(parsedDate.getTime()); // accountExpiry output is 2015-10-30 22:55:48.0
String requestQuery = "UPDATE table SET Account_Expiry = ?"
+ "WHERE Account_Id = ? "
+ "AND User_Id = ? ";
preparedStatement = con.prepareStatement(requestQuery);
preparedStatement.setTimestamp(1, accountExpiry);
preparedStatement.setInt(2, Integer.parseInt((String) jsonObject.get("selectedUserId")));
preparedStatement.setInt(3, Integer.parseInt((String) jsonObject.get("accountId")));
rowCount = preparedStatement.executeUpdate();
System.out.println("Effected Rows: " + rowCount);
Affected rows = 0
表示 UPDATE 的 where 子句不匹配您 table 中的任何记录。所以你应该首先检查where子句是否正确。
您似乎已经切换了用户 ID 和帐户 ID...
而是写:
preparedStatement.setInt(2, Integer.parseInt((String) jsonObject.get("accountId")));
preparedStatement.setInt(3, Integer.parseInt((String) jsonObject.get("selectedUserId")));