java - java中sql字符串中的MYSQL语法错误
问题描述
这是一个在 mysql 命令行中完美运行的代码,但是当我尝试在 java 中执行查询时,它给出了一个语法错误,不确定出了什么问题。
我已经添加了空格并修改了代码,但仍然没有找到解决方案。
String path = selectedfile.getAbsolutePath();
String sql = "LOAD DATA LOCAL INFILE '" + path + "' REPLACE INTO TABLE
temp FIELDS TERMINATED BY ',' ENCLOSED BY '" + '"' + " LINES TERMINATED BY
'\r\n' IGNORE 1 LINES \n" + "
(fname,lname,email,idemployee,statu,@hiredate,idsupervisor,
jobtitle,description,country,site,clockid) "+
"SET hiredate = STR_TO_DATE(@hiredate, '%m/%d/%Y');";
这是java中的输出
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的 '' IGNORE 1 LINES (fname,lname,email,idemployee,statu,@hiredate,idsupervisor,job' 附近使用正确的语法
解决方案
您需要转义查询中的反斜杠,以便将它们从 Java 传递到 MySQL。
你也错过了'
周围的ENCLOSED BY
环境。您可以转义双引号,而不是在那里连接字符串。
String sql = "LOAD DATA LOCAL INFILE '" + path + "' REPLACE INTO TABLE
temp FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY
'\\r\\n' IGNORE 1 LINES \n" + "
(fname,lname,email,idemployee,statu,@hiredate,idsupervisor,
jobtitle,description,country,site,clockid) "+
"SET hiredate = STR_TO_DATE(@hiredate, '%m/%d/%Y');";
推荐阅读
- c++ - CMake 找不到 librdkafka
- kotlin - 如何编写就地扩展功能
- node.js - server.js 中的内存泄漏 反应/快递/ SSR
- ios - Alamofire 返回与预期不同的结果
- ionic3 - 离子服务 WebSocket 连接到 'ws://localhost:53703/' 失败:net::ERR_FAILED
- flutter - 在 AlarmManager 中调用平台特定方法
- c# - 将嵌套集合从 MVC 视图发布到控制器
- google-chrome - chrome 每个插件的内容设置不起作用
- python - 熊猫:将单元格值与同一列中的单元格值进行比较?
- javascript - 如何使用滚动来修改 CSS 变换比例?