当尝试使用 JDBC 将字符串的值插入我的数据库而不是插入字符串的值时,它会插入字符串的名称。
我有一个名为 firstName 的字符串,该字符串的值由用户输入给出。
这是我的sql语句:
String sql = "Insert INTO users (ID, firstName, address) VALUES ('124','+firstName()','123')";
由于各种原因,最好使用java.sql.PreparedStatement
. 执行带参数的语句。例如,如果你想避免sql 注入攻击。
请参阅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
尝试这个
String sql = "Insert INTO users (ID, firstName, address) VALUES ('124','"+firstName()+"','123')";
为了防止 sql 注入,您需要在查询中使用之前对字符串进行转义或尝试准备好的语句。
像这样的东西。。
String firstName ="sample";
String sql = "Insert INTO users (ID, firstName, address) VALUES ('124',"+firstName+",'123')";