我尝试使用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();
}
答案 0 :(得分:4)
假设 1 那两列是VARCHAR
(或类似的列),则需要在SQL中将值作为字符串文字提供。但是,用于构建SQL的代码不会在字符串两边加上引号。因此,SQL无效。
创建这样的SQL语句的另一个问题是,它可能使您的应用程序容易受到SQL Injection的攻击。</ p>
PreparedStatement
和?
解决了这两个问题。 JDBC驱动程序处理将值安全插入SQL所需的任何引号,转义和其他转换。
1-此假设基于列名:username
和password
。