日期:2014-05-20  浏览次数:20817 次

mysql的sql查询语句,在mysql里能用,但在servlet里用prepareStatement就报错了
String sql = "SET @gid = (SELECT g_id from users where userid = ?) ; SET @gid = (SELECT left(@gid,LENGTH(@gid)-1)); CALL proc_split(@gid,','); SELECT groupsid,gname,u_id,groupspic,ginfo,gdate FROM groups WHERE groupsid in (SELECT `VALUE` FROM splittable ); ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,uid);
ResultSet rs = pstmt.executeQuery();

错误原因:
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 'SET @gid = (SELECT left(@gid,LENGTH(@gid)-1));
 CALL proc_split(@gid,','); SELECT' at line 1


------解决方案--------------------
JDBC中的普通SQL语句只能一句一句的执行。
你的SQL语句中有好几个语句。
或者你看看可以可以弄成MySQL的存储过程,然后用JDBC调用此存储过程。
------解决方案--------------------
你这已经是多条sql语句了。。。
------解决方案--------------------
你这已经是多条sql语句了。。。
------解决方案--------------------
mysql在jdbc里只能一句一句执行么?没这样用过mysql,但是jdbc连sqlserver只要不超长就可以执行多句。
------解决方案--------------------
只能分解成一句句执行了,先从数据库里查出变量再执行这条sql语句吧,就是把这条语句变成一条语句