java - 具有 ON DUPLICATE KEY UPDATE 的插入查询的 Statement 类中的executeUpdate(String sql) 方法

标签 java mysql sql netbeans

我正在我的 net beans java 应用程序中执行插入查询。

public boolean Update(){
    String sql="insert into customer(cNic,cName,cAddress,cTp,cEmail,creditLimit,CustomerStatus)"
            + "values('"+cs.getcNic()+"','"+cs.getcName()+"','"+cs.getcAddress()+"','"+cs.getcTp()+"'"
            + ",'"+cs.getcEmail()+"','"+cs.getCreditLimit()+"',0) "
          + "ON DUPLICATE KEY UPDATE cName=VALUES(cName), cAddress=VALUES(cAddress), "
            + "cTp=VALUES(cTp), cEmail=VALUES(cEmail), \n" +
                "creditLimit=VALUES(creditLimit),CustomerStatus=0;";
    try {
        Statement stmt=dbConn.createStatement();
        int rslt =stmt.executeUpdate(sql);
        if(rslt==1){
            return true;
        }
        else{
            return false;
        }
    } 
    catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, ex, "DB_CONNECTION ERROR", JOptionPane.ERROR_MESSAGE);
        return false;
    }

}

此方法适用于新行。 但是当我添加一行(表中已有主键)时,stmt.executeUpdate(sql) 方法返回 2。但是表中的数据已更新。但我无法检查插入是否成功完成。正常情况下如果执行成功会返回1。有没有办法在net beans中执行这个查询并知道它是否已正确更新。

最佳答案

首先请帮我一个忙,用PreparedStatement替换Statement

executeUpdate() - 返回 SQL 数据操作语言 (DML) 语句的行计数

方法返回 2 表示两行受到影响

但是我无法检查插入是否成功

如果没有插入,它将返回 0 或抛出异常

关于java - 具有 ON DUPLICATE KEY UPDATE 的插入查询的 Statement 类中的executeUpdate(String sql) 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25474261/

相关文章:

java - 如何使用 CrudRepository 从数据库获取 'now time'?

带有 SSL 的 Java/Spring UnrecoverableKeyException

java - 小数java

mysql - 这里需要 `parent`上的索引吗?

php - 如何通过 PHP 表单使选择不区分重音?

sql - 无法在输出选择中切换列

java - 如何以编程方式获取 Java 类依赖项列表

php - 如何计算接下来的周数?

sql - SQL 查询中\(反斜杠) 是什么意思?

jquery - asp.net json将数据从表复制到另一个表