Java 决定添加或更新
如果已经有一个主键不存在的记录,我需要添加一个记录;否则将更新现有记录。为此,我使用主键查询数据库。如果没有记录,我将添加;否则将更新。我正在使用原始JDBC用java编写这段代码Java 决定添加或更新,java,mysql,Java,Mysql,如果已经有一个主键不存在的记录,我需要添加一个记录;否则将更新现有记录。为此,我使用主键查询数据库。如果没有记录,我将添加;否则将更新。我正在使用原始JDBC用java编写这段代码 有更好的方法吗?最软的方法是在我的Sql中使用特殊的查询。它比检查应用程序端是否存在冲突要有效得多 代码段,例如: PreparedStatement statement = null; try { statement = connection.prepareStatement( "INSER
有更好的方法吗?最软的方法是在我的Sql中使用特殊的查询。它比检查应用程序端是否存在冲突要有效得多 代码段,例如:
PreparedStatement statement = null;
try {
statement = connection.prepareStatement(
"INSERT INTO table (a,b,c) VALUES (?,?,?) ON DUPLICATE KEY UPDATE c=?;"
);
int paramIndex = 1;
statement.setInt(parameterIndex++, primaryKeyValue);
statement.setInt(parameterIndex++, secondValue);
statement.setInt(parameterIndex++, thirdValue);
statement.setInt(parameterIndex++, thirdValue);
int updatedCount = statement.executeUpdate();
} finally {
statement.close();
}
最软的方法是在我的Sql中使用特殊的查询。它比检查应用程序端是否存在冲突要有效得多 代码段,例如:
PreparedStatement statement = null;
try {
statement = connection.prepareStatement(
"INSERT INTO table (a,b,c) VALUES (?,?,?) ON DUPLICATE KEY UPDATE c=?;"
);
int paramIndex = 1;
statement.setInt(parameterIndex++, primaryKeyValue);
statement.setInt(parameterIndex++, secondValue);
statement.setInt(parameterIndex++, thirdValue);
statement.setInt(parameterIndex++, thirdValue);
int updatedCount = statement.executeUpdate();
} finally {
statement.close();
}
另一种方法是采用与插入相同的语法,但在插入前主键已存在时删除旧条目。另一种方法是采用与插入相同的语法,但在插入前主键已存在时删除旧条目
最简单也是最通用的方法是在插入/更新之前对记录进行计数 伪代码:
SELECT COUNT(*) as recordCount FROM mytable WHERE keyField = ?
if (recordCount > 0) {
UPDATE mytable SET value1=? WHERE keyField = ?
} else {
INSERT INTO mytable (keyField, value1) VALUES (?, ?)
}
最简单也是最通用的方法是在插入/更新之前对记录进行计数 伪代码:
SELECT COUNT(*) as recordCount FROM mytable WHERE keyField = ?
if (recordCount > 0) {
UPDATE mytable SET value1=? WHERE keyField = ?
} else {
INSERT INTO mytable (keyField, value1) VALUES (?, ?)
}
使用hibernate??还是JDBC?使用hibernate??还是JDBC?