我在这个INSERT ROW语句(java)中做错了什么



我正在尝试使用一个语句,一旦用户在文本字段中键入名称和ID号,该语句就会在表中插入一行。然而,在尝试运行程序时,我不断地遇到错误,我从Java书中复制了INSERT语句的确切格式。见下文:

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

我知道VALUES的引号肯定是错的??这是我一直得到的错误:

java:323:错误:未闭合的字符文字"VALUES("(+^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来构建查询。使用占位符("?"(,并通过调用setter将其替换为适当的值。

为了清楚起见,请尝试以下格式:

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

相关内容

最新更新