java - 使用 Tomcat 和 MySQL 的 RuntimeException

标签 java mysql jsp exception tomcat

我无法解决这个问题!

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 + "';";

(有些词是德语)

异常(exception)情况:

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)

谢谢!

最佳答案

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

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

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

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

关于java - 使用 Tomcat 和 MySQL 的 RuntimeException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23574270/

相关文章:

java - 为什么我们特别使用JMS?

java - 如何从 Native SQL 读取具有多个字段的 SQL

java - 如何停止下一个线程在 ScheduledThreadPoolExecutor 中运行

php - 2 数据库设计问题。层次树

java - JSTL/JSP动态表单页面状态

java - session 持久性与值(value)栈维护之间的区别

java - 在外部维护 Java 资源属性文件

php - 如何在自动创建的 html/PHP 表中回显 SQL 表数据

JSP - 如何查找名称 (Tomcat/MVC)

mysql - 对时间戳列进行 SELECT 查询,返回 GMT,而不是设置的时区