用未知参数准备的陈述

时间:2014-05-07 17:34:32

标签: java mysql jdbc prepared-statement

我正在尝试创建一个可以连接到数据库并选择一些结果的函数。我想用准备好的声明来做这件事,但不知道给出了什么类型的论据。

让我们说这是我的测试数据

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);
    }
}

1 个答案:

答案 0 :(得分:0)

由于您要发送String参数,因此您只需将第9行更改为setString(i+1,args[i])

即可

如果您知道调用它的类型,也可以使用Object ...参数并调用setObject(i + 1,args [i])。

相关问题