【问题标题】:RuntimeException using Tomcat and MySQL使用 Tomcat 和 MySQL 的 RuntimeException
【发布时间】:2014-06-27 18:19:45
【问题描述】:

我就是无法解决这个问题!

java.lang.RuntimeException: 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
'SELECT user_id FROM user WHERE USER_NAME ='test';'' at line 1

你能帮帮我吗?我不知道,可能有什么问题!语法没问题吧?

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/onlinebanking");
connection = ds.getConnection();
Statement statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
resultSetKunden_id = statement.executeQuery(kunde_id);
resultSetKontostand = statement.executeQuery(kontostand);
resultSetTest = statement.executeQuery(test);
ResultSetMetaData metaData = resultSet.getMetaData();

这是 SQL 语句:

String sql = "select tr.EMPFÄNGER_KONTO_ID, tr.BETRAG " +
"from TRANSAKTION tr, KONTO ko, KUNDE ku " +
"where tr.KONTO_ID = ko.KONTO_ID " +
"and ko.KUNDE_ID = ku.KUNDE_ID " +
"and ku.KUNDE_NAME = '" + username +"' " +
"and ku.KUNDE_PASSWORD = '" + password +"';";

kunde_id = "SELECT kunde_id FROM kunde WHERE KUNDE_NAME ='" + username + "';";
String test = "SELECT * FROM kunde WHERE KUNDE_NAME ='" + username + "';";
kontostand = "Select betrag From Transaktion Where Konto_id = " + kunde_id + "';";

(有些词是德语)

这是一个例外:

java.lang.RuntimeException: 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 'Janssen''' at line 1
de.java2enterprise.onlinebanking.HalloWeltServlet.getData(HalloWeltServlet.java:112)
de.java2enterprise.onlinebanking.HalloWeltServlet.doGet(HalloWeltServlet.java:32)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

谢谢!

【问题讨论】:

  • 你能贴出你用来进行 SQL 调用的代码吗?
  • 不要评论您的代码,只需使用代码编辑您的问题:D。
  • 我刚刚自定义了一些 varnames,因为它们是德语
  • 请显示代码中出现的sql语句

标签: java mysql jsp exception tomcat


【解决方案1】:

我建议使用准备好的语句,甚至是 ORM 框架。

但要回答您的问题,您应该替换:

kontostand = "Select betrag From Transaktion Where Konto_id = '" + kunde_id + "'";

kontostand = "Select betrag From Transaktion Where Konto_id = (" + kunde_id + ")";
                                                              ^                ^

【讨论】:

  • @minimen 另一个例外是什么?
  • java.lang.RuntimeException: ResultSet 关闭后不允许操作
  • @minimen 好的,这是另一个问题,和sql语法无关。
  • 是的。谢谢你们!
【解决方案2】:

不要放; (分号)在您的查询中。

所以您的查询将是:

String sql = "select tr.EMPFÄNGER_KONTO_ID, tr.BETRAG " +
"from TRANSAKTION tr, KONTO ko, KUNDE ku " +
"where tr.KONTO_ID = ko.KONTO_ID " +
"and ko.KUNDE_ID = ku.KUNDE_ID " +
"and ku.KUNDE_NAME = '" + username +"' " +
"and ku.KUNDE_PASSWORD = '" + password +"'";

kunde_id = "SELECT kunde_id FROM kunde WHERE KUNDE_NAME ='" + username + "'";
String test = "SELECT * FROM kunde WHERE KUNDE_NAME ='" + username + "'";
kontostand = "Select betrag From Transaktion Where Konto_id = '" + kunde_id + "'";

【讨论】:

  • 仍然得到 RuntimeException .-.
  • 另外,您在上一个查询中缺少一个 ':
  • 这就是我不明白的原因!哪里出了问题?
猜你喜欢
  • 2021-09-12
  • 1970-01-01
  • 2016-04-11
  • 2013-09-20
  • 1970-01-01
  • 2010-12-07
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多