问题描述
我正在尝试使用一条语句,一旦用户在文本字段中输入名称和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
+ "')";