1

我正在使用 Oracle 数据库和 Jython。

我可以从数据库中提取数据没有问题。

results = statement.executeQuery("select %s from %s where column_id = '%s'", % (column, table, id))

如果我想提取一列数据,这很好用。

假设我想循环抛出一个这样的列表:

columns = ['column1', 'column2', 'column3', 'column4', 'column5']

所以查询最终看起来像这样:

results = statement.executeQuery("select %s, %s, %s, %s, %s from %s where column_id = '%s'", % (column1, column2, column3, column4, column5, table, id))

我怎么能这样做?

我想要实现这一点的原因是因为我可能想要拉 6 或 7 列,并且我想将不同的查询存储在外部文件中。

我希望你明白我的意思。如果不是,我会尽我所能重新措辞。

干杯

亚瑟

4

1 回答 1

3

您可以简单地将所有列替换为单个字符串,如下所示:

columns = ['column1', 'column2', 'column3', 'column4', 'column5']
results = statement.executeQuery("select %s from %s where column_id = '%s'" % (",".join(columns), table, id))

顺便说一句,这并不能防止 SQL 注入,所以我假设列、表和 id 输入是程序生成或清理的。

于 2009-01-14T15:19:30.290 回答