我正在尝试从 parent_list 输入 select parent where number = "good" and change = "bad"
下面是正确的吗?我觉得“和”这个词在中间是乱序的。
"SELECT parent FROM parent_list where number="+"'"+good+"'" and change= "+"'"+bad+"'";
我建议你不要这样做。使用PreparedStatement
:
static String sql = "SELECT parent FROM parent_list where number= ? and change = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, good);
ps.setString(2, bad);
ResultSet rs = ps.executeQuery();
绑定变量将使您不易受到 SQL 注入的影响。代码也更具可读性。 PreparedStatement
逃避Strings
和Dates
为你,所以你不必担心错误的报价位置。
您还应该确保正确关闭您的PreparedStatement
和ResultSet
- 在 finally 块中,每个块都有自己的 try/catch 包装器。
一般来说,String.format
当您需要将参数插入字符串时,您可以使用它来让您的生活更轻松。
String.format("number='%s' and change='%'", good, bad);
但是,在构建数据库查询时,这不是一个好方法,原因有很多。一个名为的特殊对象PreparedStatement
正是为此目的而存在的。见下文。
由于您正在执行 SQL,因此最好使用PreparedStatement
. 这使您不那么容易受到注射,并且还可以避免一些可能导致头痛的事情(报价,日期等)。
String sqlFmt = "SELECT parent FROM parent_list WHERE number= ? AND change = ?";
PreparedStatement statement = connection.prepareStatement(sqlFmt);
statement.setString(1, good);
statement.setString(2, bad);