【问题标题】:SQL Syntax error when trying to perform "replace into" from JDBC尝试从 JDBC 执行“替换为”时出现 SQL 语法错误
【发布时间】:2018-01-04 17:18:35
【问题描述】:

我正在使用 Java 应用程序访问我的 MySQL 数据库,并且绝对一切正常。

当我尝试运行以下命令时会出现问题:

Statement stmt = conn.createStatement();
stmtSql = "SET FOREIGN_KEY_CHECKS=0; \n replace into database.user (EMail,Nickname,WebPassword,registerdOn,ProfilePic,usertype) values ('" + email + "','" + user + "','" + pass+ "','" +joined+ "','" +profPic+ "','" +type + "');\n SET FOREIGN_KEY_CHECKS=1;";
stmt.executeQuery(stmtSql);

我也打印了这个,如果我直接在 MySQL 中运行它,它就可以很好地工作

SET FOREIGN_KEY_CHECKS=0; 
replace into animelicious.user (EMail,Nickname,WebPassword,registerdOn,ProfilePic,usertype) values ('somemail@hotmail.com','someperson','justapw','2017-11-01','url','0');
SET FOREIGN_KEY_CHECKS=1;

我知道 foreign_key 检查设置是一个肮脏的解决方法,但据我所知它应该可以工作。

一些更有用的信息可能是: 是的,用户已经存在。 只有电子邮件和昵称是唯一的,只有昵称是外键。 只有电子邮件被替换,该列的其余部分保持不变。

【问题讨论】:

    标签: java mysql jdbc


    【解决方案1】:
    Statement stmt = conn.createStatement();
    stmt.addBatch("SET FOREIGN_KEY_CHECKS=0;");
    stmt.addBatch"replace into database.user (EMail,Nickname,WebPassword,registerdOn,ProfilePic,usertype) values ('" + email + "','" + user + "','" + pass+ "','" +joined+ "','" +profPic+ "','" +type + "');");
    stmt.addBatch("SET FOREIGN_KEY_CHECKS=1;");
    stmt.executeBatch();
    

    【讨论】:

      猜你喜欢
      • 2013-10-07
      • 2022-01-16
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 2014-12-03
      • 1970-01-01
      • 2016-02-08
      • 2019-08-09
      相关资源
      最近更新 更多