MSSQL,表Khdz,四个字段,F01-F04,其中F01\F03是主键,现要用java插入一条数据,如果表存在则更新,不存在则插入
时间: 2023-12-23 12:03:35 浏览: 62
mysql 存在该记录则更新,不存在则插入记录的sql
可以使用以下代码实现:
1. 定义SQL语句
```
String sql = "MERGE INTO Khdz WITH (HOLDLOCK) AS T " +
"USING (VALUES (?, ?, ?, ?)) AS S (F01, F02, F03, F04) " +
"ON T.F01 = S.F01 AND T.F03 = S.F03 " +
"WHEN MATCHED THEN " +
"UPDATE SET T.F02 = S.F02, T.F04 = S.F04 " +
"WHEN NOT MATCHED THEN " +
"INSERT (F01, F02, F03, F04) VALUES (S.F01, S.F02, S.F03, S.F04);";
```
2. 获取数据库连接
```
Connection conn = DriverManager.getConnection(url, username, password);
```
3. 创建PreparedStatement对象
```
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "F01的值");
ps.setString(2, "F02的值");
ps.setString(3, "F03的值");
ps.setString(4, "F04的值");
```
4. 执行SQL语句
```
ps.executeUpdate();
```
这段代码使用了MERGE语法,将源数据表(source)与目标数据表(target)进行匹配,如果匹配成功,则更新数据,如果匹配不成功,则插入数据。在Java中,使用PreparedStatement对象来执行SQL语句,可以防止SQL注入攻击,提高数据安全性。
阅读全文