0
Scanner input = new Scanner(System.in);
System.out.println("Enter Staff Name: ");
String staffName = input.nextLine();
System.out.println("Enter Department Name: ");
String department =Input.nextLine();

stmt.executeUpdate("insert into staff (StaffName,department) " + "values " +  
staffName,department);

这给了我一个错误,并要求我检查 SQL 手册。这甚至可能吗?

4

2 回答 2

2

这是可能的,因为它发生了。在 SQL 中,字符串必须用引号引起来:

insert into foo (bar, baz) values ('hello', 'world');

学习使用准备好的语句而不是字符串连接,以使您的查询正常工作,并且不受SQL 注入攻击:

PreparedStatement stmt = connection.prepareStatement("insert into staff (StaffName, department) values (?, ?)");
stmt.setString(1, staffName);
stmt.setString(2, department);
stmt.executeUpdate();

使用上述内容,您无需在字符串中弄乱引号或转义它们。

于 2013-08-12T22:10:32.380 回答
0

不一定是用户输入的格式不正确。INSERT into 的格式应如下:

INSERT INTO <table_name>
VALUES (<1>, <2>, ... <n>);

要正确格式化 SQL 查询,您可以尝试:

String sql = "INSTERT INTO STAFF (StaffName, department) VALUES (\'" + 
  staffName + "\', \'" + department + "\');";
于 2013-08-12T22:10:18.800 回答