在此INSERT ROW语句中我在做什么错java

问题描述

我正在尝试使用一条语句,一旦用户在文本字段中输入名称和ID号,该语句将在表中插入一行。但是,在尝试运行该程序时,我总是收到错误消息,并且从字面上复制了我的Java书籍中INSERT语句的确切格式。见下文:

            String insertStudentStatement = "INSERT INTO Students " +
                                      "(StudentId,StudentName) " +
                                      "VALUES ("' + 
                                      studentId + "'," + 
                                      studentName + "')";

我知道我必须对VALUE的引号有误吗?这是我不断收到的错误

CourseSystem.java:323:错误:未封闭的字符文字 “ VALUES(”'+ ^ CourseSystem.java:325:错误:不是语句 studentName +“')”; ^

解决方法

String insertStudentStatement = "INSERT INTO Students " +
                                  "(StudentId,StudentName) " +
                                  "VALUES ('" + studentId + "','" + 
                                  studentName + "')";

我认为,假设StudentId是文本类型而不是数字,这应该给出正确的语法。

还请考虑其他建议使用参数的PreparedStatements响应。这样可以减少SQL注入的风险并开箱即用地管理报价。

,

只要确保您的括号和引号正确即可。请记住,对于SQL,您需要在字符串值的两边加上单引号('),但在数字之间则不需要任何引号。因此,对于您的价值观:

String insertStudentStatement = "INSERT INTO Students (StudentId,StudentName) "
    + "VALUES ('" + StudentId + "','" + StudentName + "')"; 

您应该考虑使用PreparedStatements来构建查询。使用占位符(“?”)并通过调用设置器将它们替换为适当的值。

,

加引号和缺少引号,为清楚起见,请尝试使用以下格式:

String insertStudentStatement = "INSERT INTO Students (StudentId,StudentName) VALUES ('"
                              + studentId
                              + "','"
                              + studentName
                              + "')";