JDBC插入或更新实践

卢声远*_* Lu 10 java jdbc insert-update

如果记录不存在,我需要在表中插入记录,如果表中存在记录,则需要更新记录.当然,我可以写:p-code:

SELECT * FROM table1 WHERE id='abc' by JDBC
if(exists)
   UPDATE table1 SET ... WHERE id='abc' by JDBC;
else
   INSERT INTO table1... by JDBC;
Run Code Online (Sandbox Code Playgroud)

但是,我不认为代码是优雅的.或者,我也可以用这种方式编写它:p代码:

int row = Statement.executeUpdate("INSERT INTO table1...", 2);
if(row==0)
  update table1 SET ... WHERE id='abc' by JDBC;
Run Code Online (Sandbox Code Playgroud)

你认为后一种方式更好更快吗?谢谢!

编辑:在MYSQL中

sbr*_*tla 11

这取决于您使用的数据库类型以及是否可以利用数据库特定功能.例如,MySQL允许您执行以下操作:

INSERT INTO territories (code, territory) VALUES ('NO', 'Norway')
ON DUPLICATE KEY UPDATE territory = 'Norway'
Run Code Online (Sandbox Code Playgroud)

但是,上述内容不符合标准(SQL-92).也就是说,它很可能不适用于所有数据库.换句话说,您必须坚持编写代码.它可能看起来不那么优雅,但它可能是最安全的解决方案.