开发者社区> 问答> 正文

java 执行 sql 文件报错 求大神帮忙解决 急急急!!!! ?报错

sql文件里边的内容
/*
Navicat MySQL Data Transfer

Source Server : localhost_3306
Source Server Version : 50096
Source Host : localhost:3306
Source Database : cemscenter1

Target Server Type : MYSQL
Target Server Version : 50099
File Encoding : 65001

Date: 2015-04-22 10:09:37
*/

SET FOREIGN_KEY_CHECKS=0;


-- Procedure structure for QueryLimberWaterHourData


DROP PROCEDURE IF EXISTS QueryLimberWaterHourData;
DELIMITER ;;
CREATE DEFINER=root@localhost PROCEDURE QueryLimberWaterHourData()
BEGIN
select * from temp_waterhourdata;
END
;;
DELIMITER ;

这个sql文件在Navicat里边执行可以成功
在java程序里用 SQLExec 执行就报错
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER' at line 1

java 代码
SQLExec sqlExec = new SQLExec();
sqlExec.setDriver("com.mysql.jdbc.Driver");
sqlExec.setUrl("jdbc:mysql://localhost:3306/test");
sqlExec.setUserid("root");
sqlExec.setPassword("ssdlh");

sqlExec.setSrc(new File("src/process"+name+".sql"));

sqlExec.setOnerror((SQLExec.OnError)(EnumeratedAttribute.getInstance(
SQLExec.OnError.class, "abort")));
sqlExec.setPrint(true);

sqlExec.setOutput(new File("src/sql.out"));

sqlExec.setProject(new Project());

try{
sqlExec.execute();

展开
收起
爱吃鱼的程序员 2020-06-23 14:54:03 491 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    这不是sql语句,当然不能执行

    用sqlExec.setDelimiter代替

    DELIMITER;;这只有mysqlWorkbench执行的时候需要吧,java执行应该不需要的。

    delimiter;;
    多了一个分号;

    你写的好像是mysql存储过程,所以我觉得应该用javaCallabeStatement对应的API去调用,不能当作简单的jdbcsql语句去执行。
    建议你把java代码也贴出来这样好查找错误。

    你可以看看这个链接:http://www.zhujiangroad.com/program/JAVA/2352.html

    2020-06-23 14:54:20
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载