我尝试使用 get() 函数在 SQL 查询中给出列的值,但它给出了 SQLSyntaxErrorException。
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connect = DriverManager.getConnection("DB URL");
String sl = "INSERT INTO users(username,password)" + "VALUES(" + beans.getUsername() + "," + beans.getPassword() + ")";
PreparedStatement pts = connect.prepareStatement(sl);
pts.executeUpdate();
}
最佳答案
假设1这两列是VARCHAR
(或类似列),这些值需要在 SQL 中作为字符串文字提供。但是构建 SQL 的代码并没有在字符串周围加上引号。因此,该 SQL 无效。
创建这样的 SQL 语句的另一个问题是,它可能会使您的应用程序容易受到 SQL Injection 的攻击。 .
PreparedStatement
和 ?
解决了这两个问题。 JDBC 驱动程序处理将值安全插入 SQL 所需的任何引用、转义和其他转换。
1 - 此假设基于列名称:用户名
和 密码
。
关于java - 为什么使用 getter 函数代替 "?"时会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57433477/