我有一个错误_msg表,该表存储具有某些ID的错误消息。我想插入错误消息,如果表中不存在ID,以及其当前的更新错误消息。使用以下Java JDBC代码插入。
ID ERROR_MSG
1 ERR1
2 ERR2
3 ERR3
这是我的代码:
insertQry = "SQL";
Connection con = null;
PreparedStatement stmt = null;
try {
con = getDataSource().getConnection();
stmt = con.prepareStatement(insertQry);
for(ListingAckNackData errorList: listOfListingERROR) {
stmt.setLong(1, eqGlobalData.getSrcMsgId());
stmt.setString(2, errorList.getGliId());
if (null != errorList.getListingRevisionNo()) {
stmt.setInt(3, errorList.getListingRevisionNo());
} else {
stmt.setNull(3, Types.NULL);
}
if (null != errorList.getErrorMessage()) {
stmt.setString(4, errorList.getErrorMessage());
} else {
stmt.setNull(4, Types.NULL);
}
stmt.addBatch();
}
stmt.executeBatch();
}
Java中最简单的解决方案是检查该行是否存在。
您首先要获得要插入/更新
的特定id
的行计数 select count('a') as rowExist from table where id = ?
然后,根据结果,您可以轻松创建查询
if(rowExist > 0){
query = "update ..";
else
query = "insert ...";
请注意,参数可能与您预期的顺序不同,您需要以正确的顺序创建insert
,以便在末端具有id
(因为update
需要where
子句)
insert into Table (name, birthday, id) values (?, ?, ?)
update Table set name = ?, birthday = ? where id = ?
可以按质疑运行数据库语句。只需使用SQL命令合并到...如果不匹配的插入...如果匹配的更新...您将在此处找到一个完整的示例和文档。