为了账号安全,请及时绑定邮箱和手机立即绑定

我不断使用逐部分构建的 sql 请求获取 SQLError

我不断使用逐部分构建的 sql 请求获取 SQLError

米琪卡哇伊 2023-06-08 12:58:12
我有一个 JavaFX 应用程序,用户在其中输入一些关于他的信息,然后我有一个名为的类,DbUpdateBuilder它允许我更轻松地创建我的 sql resquest。然后我用statement.executeUpdate(request)问题是我总是收到这个错误: java.sql.SQLSyntaxErrorException: syntax error near " line 1所以我认为我的请求有问题所以我打印了我收到的请求:UPDATE `users` SET `users`.`first_name`=null,`users`.`last_name`=null,`users`.`age`=null,`users`.`role`=null,`users`.`gender`= 3  WHERE `users`.`id` LIKE 10如果我对它进行硬编码,它就可以工作。这不起作用            // Some code            Statement stmt = con.createStatement();            String request = builder.getRequest();            System.out.println(request); // where the request in the                                          // working exemple comes from            if(stmt.executeUpdate(request) > 0) { // I get the error from this                                                   // line                return UPDATE_SUCCESS;            }            return SQL_ERROR_OCCURED; 但这确实有效            Statement stmt = con.createStatement();            String request = builder.getRequest();            System.out.println(request);            if(stmt.executeUpdate("UPDATE `users` SET `users`.`first_name`=null,`users`.`last_name`=null,`users`.`age`=null,`users`.`role`=null,`users`.`gender`= 3  WHERE `users`.`id` LIKE 10") > 0) {                return UPDATE_SUCCESS;            }            return SQL_ERROR_OCCURED; 我必须确定工作示例中硬编码的请求来自非工作示例中打印的请求的复制和粘贴
查看完整描述

3 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

只是建议 LIKE 对字符串起作用,通常与 wild char 一起使用


如果您需要完全匹配,那么可能是您需要的

,然后使用 equal


UPDATE `users` 

SET `users`.`first_name`=null,

    `users`.`last_name`=null,

    `users`.`age`=null,

    `users`.`role`=null,

    `users`.`gender`= 3  

WHERE `users`.`id` = 10

如果您需要模式匹配,请使用 like 和 wildchar 例如;


UPDATE `users` 

SET `users`.`first_name`=null,

    `users`.`last_name`=null,

    `users`.`age`=null,

    `users`.`role`=null,

    `users`.`gender`= 3  

WHERE `users`.`id` LIKE '%10%'


查看完整回答
反对 回复 2023-06-08
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

但我自己发现了问题:我比较了两个字符串(一个硬编码的字符串和一个由我的构建器生成的字符串)它们具有相同的长度,所以我逐个字符地打印每个字符串,然后我发现了问题!一些字符等于 null 所以 SQL 不喜欢它并产生错误但是当我打印它时 null 字符被忽略了......

查看完整回答
反对 回复 2023-06-08
?
智慧大石

TA贡献1946条经验 获得超3个赞

有时引号 ' 不被 mysql 接受,但你可以尝试这个简单的没有 qoutes


  UPDATE users 

     SET first_name=null,

       last_name=null,

       age=null,

       role=null,

       gender='3' 

  WHERE id LIKE '%10%'

并确保您的数据类型正确, null 也等于空,您可以尝试将其更改为 '' like first_name=''


查看完整回答
反对 回复 2023-06-08
  • 3 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信