【发布时间】:2018-07-24 21:07:50
【问题描述】:
以下是我的代码,我正在传递 stateid,并根据 stateid 从表 base_path 中检索数据。
代码在第一次迭代时运行良好,即 stateid = 1 它返回一个结果,但对于第二次迭代,即 state_id = 2 它返回两个记录,即 s_id = 1 和 2。
如何解决这个问题并仅获取 s_id = stateid 的特定记录?
数据库结构是:-
s_id base_formid base_xpath
1 1 .//*[@id='collapse-text-dynamic-form-number-1']/div/fieldset/legend/span/a
2 2 .//*[@id='collapse-text-dynamic-form-number-1']/div/fieldset/legend/span/a
public static Map baseXpath(int stateid)
{
Statement s2 = null;
try {
con=null;
con = DriverManager.getConnection(conUrl, userName, password);
s2 = con.createStatement();
String query = "SELECT base_formid,base_xpath FROM base_path where base_path.s_id = " + stateid;
ResultSet rs2 = null;
rs2 = s2.executeQuery(query);
while (rs2.next()) {
int basepath_id = rs2.getInt(1);
String base_xpath = rs2.getString(2);
basex_path.put(basepath_id, base_xpath);
}
con.close();
return basex_path;
【问题讨论】:
-
使用这样的 SQL 语句是一个非常糟糕的主意。它对注入开放。考虑参数化您的 SQL 或使用存储过程。
-
我是 sql 新手,请您帮我解决这个问题
-
恐怕我一点也不熟悉Java;所以不能建议你如何参数化一个声明。我相信有人可以做到。我的评论更像是对您当前设置的影响的有用警告。
标签: java sql-server database-connection resultset