MySQL的UPSERT(ON DUPLICATE KEY)使用JDBC预处理语句(MySQL up

2019-09-28 00:30发布

我试图写一个方法来与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(); 这是肯定的它取决于重复键的条件?

什么是正确的做法

谢谢

Answer 1:

你不想得到一个结果,有除了插入或更新的数量没有结果,只需使用executeUpdate

从javadoc的摘录:

执行给定的SQL语句,这可能是一个INSERT,UPDATE或DELETE语句



文章来源: MySQL upsert (ON DUPLICATE KEY) using JDBC Prepared Statement