选择查询中的JDBC PreparedStatement和参数(?)

时间:2017-09-02 16:45:28

标签: java oracle parameters prepared-statement

我与oracle数据库有这样的连接:

System.setProperty("webdriver.chrome.driver","C:\\Users\\XXXX\\Downloads\\chromedriver_win32\\chromedriver.exe");
System.out.println(System.getProperty("webdriver.chrome.driver"));
WebDriver driver = new ChromeDriver();
driver.get("https://www.gmail.com");

问题是第二个参数像我想要的那样传递,这意味着

  

supplier_id = 1

但我的第一个参数有问题。每次只传递字符串,所以我的查询看起来像

  

选择" supplier_id",supplier_name FROM供应商WHERE supplier_id =   ?

而不是

  

选择supplier_id,supplier_name FROM供应商WHERE supplier_id =   ?

因此,我不能从表格中获取相应于supplier_id的值,而是字符串" supplier_id"。 我究竟做错了什么?我应该更改什么来获取值不是字符串?

1 个答案:

答案 0 :(得分:4)

无法以这种方式创建动态查询,您必须使用正常的字符串操作。参数只能用于值,如字符串,数字等,而不能用于名称。

在您的情况下,可以执行类似

的操作
String sqlTemplate = "SELECT <id_column>,supplier_name FROM supplier WHERE supplier_id = ?";
String selectSQL = sqlTemplate.replace("<id_column>", "supplier_id");