-2

我正在尝试从 parent_list 输入 select parent where number = "good" and change = "bad"

下面是正确的吗?我觉得“和”这个词在中间是乱序的。

    "SELECT parent FROM parent_list where number="+"'"+good+"'" and change= "+"'"+bad+"'"; 
4

2 回答 2

5

我建议你不要这样做。使用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逃避StringsDates为你,所以你不必担心错误的报价位置。

您还应该确保正确关闭您的PreparedStatementResultSet- 在 finally 块中,每个块都有自己的 try/catch 包装器。

于 2013-06-11T16:32:44.870 回答
0

一般情况(基本字符串格式)

一般来说,String.format当您需要将参数插入字符串时,您可以使用它来让您的生活更轻松。

String.format("number='%s' and change='%'", good, bad);

但是,在构建数据库查询时,这不是一个好方法,原因有很多。一个名为的特殊对象PreparedStatement正是为此目的而存在的。见下文。

您的特殊情况(构建 SQL 查询)

由于您正在执行 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);
于 2013-06-11T16:33:17.143 回答