MySQL使用JDBC Prepared Statement upsert(ON DUPLICATE KEY)

时间:2014-08-11 11:19:03

标签: java mysql jdbc insert sql-update

我正在尝试使用java中的预准备语句编写一个具有UPSERT功能的方法。代码如下所示;

public boolean addUserDeviceToken(String userid, String password, String deviceToken, Connection connection) {
    String addDeviceToken = "INSERT INTO swiped.Users (userid, password, deviceToken) VALUES( ?, ?, ?) ON DUPLICATE KEY UPDATE devicetoken = ?";
    boolean result = false;

    ResultSet rs = null;
    PreparedStatement st = null;
    try {
        st = connection.prepareStatement(addDeviceToken);
        st.setString(1, userid);
        st.setString(2, password);
        st.setString(3, deviceToken);
        st.setString(4, deviceToken);

我不确定的是我是否使用st.executeQuery();st.executeUpdate();,这肯定取决于重复密钥的条件?

什么是正确的方法

感谢

1 个答案:

答案 0 :(得分:1)

您不想获得结果集,除了插入或更新的数量之外没有任何结果,只需使用executeUpdate

从javadoc中提取:

  

执行给定的SQL语句,该语句可以是INSERT,UPDATE或DELETE语句