MySQL Query 在 PhpMyAdmin 中有效,但在 JAVA Eclipse 中无效
Posted
技术标签:
【中文标题】MySQL Query 在 PhpMyAdmin 中有效,但在 JAVA Eclipse 中无效【英文标题】:MySQL Query works in PhpMyAdmin but not in JAVA Eclipse 【发布时间】:2014-03-23 02:40:14 【问题描述】:我是 Java 编程的完全新手,但我正在努力。我进行了广泛的搜索,但即使许多初学者程序员也遇到过同样的问题,我也无法弄清楚..
我有这个 Java mysql 问题,我无法解决这个问题!
如果我在 phpMyAdmin 中执行此查询:
SET count = 0; UPDATE tablename SET table_id = count:= count + 1;
ALTER TABLE tablename AUTO_INCREMENT = 1;
它可以按我的意愿工作,重置 ID(在我删除一行之后)它可能不是最优雅的解决方案,但它可以完成工作。
但是,一旦我从 eclipse 执行相同的查询,我的控制台就会像圣诞树一样亮起,我得到:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 你有一个 SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,用于在 'UPDATE 附近使用正确的语法 表名 SET table_id = @count:= @count + 1; ALTER TABLE 表名 第 1 行的 AU'
错误...检查我的语法。它在 phpMyAdmin 中工作。 我的 Eclipse Java 方法:
public void resetDBID()
try
// query to reset menu_id manly after delete row
Statement statement = con.connection.createStatement();
String sset;
sset = "SET @count = 0; "
+ "UPDATE afhaalmenus SET menu_id = @count:= @count + 1; "
+ "ALTER TABLE afhaalmenus AUTO_INCREMENT = 1;";
statement.execute(sset);
catch(SQLException ex)
String message = "rest ID fail";
JOptionPane.showMessageDialog(null, message, "method fail", JOptionPane.INFORMATION_MESSAGE);
ex.printStackTrace();
我在这里缺少什么?还是做错了... 提前感谢您的所有帮助!
【问题讨论】:
将单个语句添加到批处理中;然后执行批处理并提交 是的!!!!我用谷歌搜索了你的意思,它奏效了!非常感谢!!!! 不懂Java(多年没接触过)但是这里使用的createStatement / execute 是否支持单次执行中的多个SQL 语句? 如果有效,请添加解决方案作为答案。 【参考方案1】:你可以使用 addBatch
String s1 = "SET @count = 0";
String s2 = ...
try
// query to reset menu_id manly after delete row
connection = database.getConnection();
Statement statement = connection.createStatement();
statement.addBatch(s1);
statement.addBatch(s2);
statement.addBatch(s2);
s.executeBatch();
connection.commit();
catch (SQLException e)
connection.rollback();
throw e;
finally
close(statement);
close(connection);
【讨论】:
以上是关于MySQL Query 在 PhpMyAdmin 中有效,但在 JAVA Eclipse 中无效的主要内容,如果未能解决你的问题,请参考以下文章
phpMyAdmin中的慢查询但Mysql慢查询日志文件中没有[关闭]
mysql_query 总是用 SELECT EXISTS 返回 false