[英]prepared statement with unknow arguments
我正在嘗試創建一個函數,在其中可以連接到數據庫並選擇一些結果。 我想使用准備好的語句來執行此操作,但是不知道給出哪種類型的參數。
可以說這是我的測試數據
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);
}
}
由於您要發送String參數,因此只需將第9行更改為setString(i+1,args[i])
如果知道調用對象的類型,也可以使用Object ...參數並調用setObject(i + 1,args [i])。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.