簡體   English   中英

帶未知參數的准備好的語句

[英]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);

如圖所示,有一個或多個參數作為輸入,但是當我必須將其設置為問號時,我會卡住,因為我必須說它是StringsetString )還是intsetInt )。

在不知道變量是什么的情況下如何解決此問題? (第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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM