我有一个jtable。我从mysql数据库运行数据。我使用带有预处理语句的查询:
"select * from customer where city=? and region=? and price>?"
pst.setString(1,"rome")
pst.setstring(2,"italy")
pst.setdouble(3,"1500")
我的问题是,有一次我只需要一个参数(例如城市)。 我问你,每次查询时我都会改变,我可以设置dynimicaly数量的参数??
由于
答案 0 :(得分:1)
(我认为将它们分成单独的查询是一个更好的解决方案,但如果你想这样做,也许这样的事情可以帮助你)
我曾经写过像这样的东西
public ArrayList<User> searchUsers(HashMap userProperties)
{
ArrayList<User> foundUsers = new ArrayList<User>();
String searchString = "select * from chatusers where ";
int addedProps = 0;
if (userProperties.get("username") != null && !userProperties.get("username").equals(""))
{
searchString += "nickname like '%" + userProperties.get("username") + "%'";
addedProps++;
}
if (userProperties.get("firstname") != null && !userProperties.get("firstname").equals(""))
{
if (addedProps > 0)
searchString += " AND ";
searchString += "voornaam like '%" + userProperties.get("firstname") + "%'";
addedProps++;
}
if (userProperties.get("lastname") != null && !userProperties.get("lastname").equals(""))
{
if (addedProps > 0)
searchString += " AND ";
searchString += "naam like '%" + userProperties.get("lastname") + "%'";
}
....
当然你必须改变&#34; userProperties.get(&#34; prop&#34;)。到&#34;?&#34; (我知道我需要使用preparedStatements,这只是为了在我们看到预备声明之前在大学里傻了。
此外,我会以类似的方式继续实际绑定变量。 (跟踪你添加哪个变量的位置,你知道哪个索引,因为if语句)。