2015-04-17 89 views
1

我想重写代码,这是使用MySQL数据库,以使用HSQLDB。我有一个INSERT INTO ... ON DUPLICATE KEY UPDATE查询。 HSQLDB有这种方法的替代方法吗?更新插入HSQLDB

代码:

PreparedStatement ps = conn.prepareStatement("INSERT INTO user_stats " 
    + "(user, balance, kills, level)" 
    + " VALUES(?, ?, ?, ?) ON DUPLICATE KEY " 
    + "UPDATE balance=VALUES(balance), kills=VALUES(kills), level=VALUES(level)"); 

ps.setString(1, playername); 
ps.setDouble(2, PluginInterract.getESSBalance(playername)); 
ps.setInt(3, PluginInterract.getKills(playername)); 
ps.setDouble(4, PluginInterract.getPluginLevel(playername)); 

回答

1

未按the documentation。然而,MERGE声明可能会做你想要的。下面是基于文档为MERGE未测试例如:

MERGE INTO user_stats USING (VALUES(?, ?, ?, ?)) 
    AS vals(user, balance, kills, level) ON user_stats.user = vals.user 
    WHEN MATCHED THEN UPDATE SET user_stats.balance = vals.balance, user_stats.kills = vals.kills, user_stats.level = vals.level 
    WHEN NOT MATCHED THEN INSERT VALUES vals.user, vals.balance, vals.kills, vals.level 
+0

合并到{{表名}}使用{{值部分}} ON {{相撞条件}} WHEN然后再配UPDATE SET {{更新字段}} WHEN NOT MATCHED THEN插入值{{添加字段}} 合并的语法是否正确? – user3400841

+0

我举了一个例子,并提供了一个链接到文档。我从来没有使用HSQLDB,我没有一个测试环境。你必须自己做这个部分。 –