2017-02-11 100 views
2

如何使用预准备语句从数据库检索结果集?我不知道如何继续从我的代码,我设法得到准备好的语句的查询和变量,现在我被困在从数据库中检索。Java从数据库检索结果

回答

3

您无法通过字段名作为参数。只有数据可以像这样传递。条件

WHERE ?=? 
-- ^

与替代Field1field1将字面解释,因为

WHERE 'Field1'='field1' -- note the quotes around the values 

如果你想构建从字段名的情况下,你需要构造SQL字符串本身。例如,你可以通过

SELECT * FROM Table1 WHERE %s=? 

,并把它作为一个格式字符串为formatter,传递Field1的说法替代%s

要非常小心的字段的名称不被用户进入的:任何SQL成为字符串的一部分必须来自于你的程序或它的配置文件,以避免SQL注入攻击的常量池。

+0

哦,我明白了,谢谢!但让我们说,如果我想显示结果集,我如何从传递的字段中列出它们? – newbie95

+0

@ newbie95使用['ResultSetMetaData'](http://stackoverflow.com/a/696798/335858)。 – dasblinkenlight

+0

@dashblinkenlight对不起,我的意思是什么,如果从另一个类它通过像查询“从表中选择字段1,字段2在哪里......”,我怎么把字段1和字段2(取决于查询通过字段数)进入准备语句让我检索结果集? – newbie95