当尝试使用JDBC将字符串的值插入到我的数据库中时,它将插入字符串的名称,而不是插入字符串的值。JDBC - 如何插入字符串值
我有一个名为firstName的字符串,这个字符串的值由用户输入给出。
这里是我的SQL语句:
String sql = "Insert INTO users (ID, firstName, address) VALUES ('124','+firstName()','123')";
当尝试使用JDBC将字符串的值插入到我的数据库中时,它将插入字符串的名称,而不是插入字符串的值。JDBC - 如何插入字符串值
我有一个名为firstName的字符串,这个字符串的值由用户输入给出。
这里是我的SQL语句:
String sql = "Insert INTO users (ID, firstName, address) VALUES ('124','+firstName()','123')";
由于各种原因,它是更好地使用java.sql.PreparedStatement
。用参数执行语句。例如,如果你想避免sql injection攻击。
请参阅The Java Tutorials中Using Prepared Statements中的示例。
使用带参数的SQL语句的优点是您可以使用相同的语句并在每次执行时使用不同的值。
PreparedStatement pstmt = conn.prepareStatement(
"UPDATE EMPLOYEES SET FIRST_NAME= ? WHERE ID = ?");
pstmt.setString(1, "user1080390"); // set parameter 1 (FIRST_NAME)
pstmt.setInt(2, 101); // set parameter 2 (ID)
int rows = pstmt.executeUpdate(); // "rows" save the affected rows
我将在接下来的几周内详细阅读PreparedStatement的内容。不幸的是,我知道这听起来很糟糕。此时此刻我没有时间,我必须在明天的最后期限前完成工作。你有没有可能变得更具体? – user1080390
您花时间尝试使用肮脏的黑客可能会花费在阅读PreparedStatments并使用它。保罗的代码片段应该足以让你走。 – Jonathan
我试图修改从这个线程准备插入语句:http://stackoverflow.com/questions/1073101/how-do-you-do-an-extended-insert-using-jdbc-without-building-strings但我收到错误:无法找到符号preparedstatement ... – user1080390
试试这个
String sql = "Insert INTO users (ID, firstName, address) VALUES ('124','"+firstName()+"','123')";
为了防止SQL注入,您需要使用在查询之前逃脱字符串或尝试准备语句。
这是肮脏而危险的方式,容易出错(如果firstName包含引号会怎么样?),并且最重要的是,存在SQL注入攻击的危险。切勿以真实的代码做这件事。 – leonbloy
Provider.java:90:无法找到符号符号:方法firstName()localtion:class Provider String sql =“插入INTO用户(ID,名字,地址)值('124','”+ firstName()+“', '123')“;^ – user1080390
@leonbloy你是绝对正确的,对不起。 – Karo
事情是这样的..
String firstName ="sample";
String sql = "Insert INTO users (ID, firstName, address) VALUES ('124',"+firstName+",'123')";
你似乎不明白双引号与外面里面的东西之间的区别。它正在*正是*你告诉它。 –