簡體   English   中英

消除mysql n java中預准備語句中的引號

[英]Eliminating quotes in prepared statement in mysql n java

我有這樣一份准備好的聲明

stmt = select * from table_name where id IN (?);

一旦我傳遞參數,stmt看起來就像

stmt = select * from table_name where id IN ('1,2,3');

執行查詢時沒有錯誤。 但是,僅為id=1返回resultset 有什么方法可以消除引號/得到所有這些id的resultset

stmt = select * from table_name where id IN (?);

select GROUP_CONCAT(id) id from table ;

if(rs.next()){

    stmt.setString(1,rs.getString("id"));

    stmt.executeQuery();
}

提前致謝。

目前還不清楚ID類型是什么,但我相信你應該准備一個聲明,將每個可能的值作為一個單獨的參數:

select * from table_name where id IN (?, ?, ?)

然后為這三個參數添加三個值。 這是參數化SQL的常見問題 - 當您希望能夠指定可變數量的值時,您需要改變SQL。 可能有一種特定於MySQL的方法來處理這種情況(比如SQL Server 2008中的表值參數 ),但我不相信有一種通用的JDBC方法可以做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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