我正在尝试创建一个可以连接到数据库并选择一些结果的函数。我想用准备好的语句来做到这一点,但不知道给出什么类型的参数。
可以说这是我的测试数据
int id = 5;
String name = "John Doe";
然后我想这样调用我的函数:
read("SELECT * FROM users WHERE id=?", id);
或
read("SELECT * FROM users WHERE id=? AND name=?",id,name);
如图所示,我得到一个或多个参数作为输入,但是当我必须将其设置为问号时,我陷入困境,因为我必须说它是否是一个 String
(setString
) 或 int
(setInt
)。
在不知道变量是什么的情况下如何解决这个问题? (第 9 行)
1 public void read(String query, String... args){
2 try{
3
4 Connection con = DriverManager.getConnection(databaseURL, username, password);
5
6 PreparedStatement pstmt = con.prepareStatement(query);
7 for(int i = 0; i < args.length;i++){
8 //What do I put here?
9 pstmt.setValue(i,args[i]);
10 }
String select = "use datapersistentie;";
pstmt.executeQuery(select);
ResultSet rs = pstmt.executeQuery(query);
while (rs.next()) {
// do something with the result
}
stmt.close();
con.close();
} catch (Exception e){
System.out.println(e);
}
}
最佳答案
由于您要发送字符串参数,因此只需将第 9 行更改为 setString(i+1,args[i])
如果您知道调用它的类型,您还可以使用 Object... 参数并调用 setObject(i+1,args[i]) 。
关于java - 带有未知参数的准备好的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23524458/