簡體   English   中英

如何從SQL查詢(JOOQ)獲取列參數

[英]How to get column parameters from SQL query (JOOQ)

我有一個問題,是否有可能從JOOQ -java的SQL查詢中獲取參數。

我正在使用這樣的東西:

for (Query query: sqlQueries){
    for (Param param: query.getParams().values()) {
         System.out.println("P: "+ param.getName());
    }
}

SQL查詢:

...
insert into `filetest` (`Priezvisko`, `Meno`, `Vek`) values ('Kotov', 'Peter', '22');
insert into `filetest` (`Priezvisko`, `Meno`, `Vek`) values ('Alhambra', 'Seat', '33');
insert into `filetest` (`Priezvisko`, `Meno`, `Vek`) values ('F50', 'Ferrari', '100');

將這樣處理(輸出):

P: Kotov
P: Peter
P: 22
P: Alhambra
P: Seat
P: 33
P: F50
P: Ferrari
P: 100

我還需要使用以下列名稱獲取輸出:

P: Priezvisko
P: Meno
P: Vek
P: Kotov
P: Peter
P: 22
... rest

是否有可能因為我不知道怎么辦? 如果我可以問,甚至有可能從查詢中獲取tableName嗎? (在我們的示例中為“ filetest”)

我為什么需要這樣做是為了讓那些參數創建CSV文件(SQL-> CSV),從提到的SQL創建CSV:

Meno,Priezvisko,Vek
"Peter","Kotov","22"
"Seat","Alhambra","33"
"Ferrari","F50","100"

特定參數恰好被“鏈接”到SQL語句中的列這一事實是您的一個相當隨意的假設。 下面的語句是一個簡單的示例,可能會破壞您的假設:

insert into `filetest` (`Priezvisko`, `Meno`, `Vek`) 
values ((select 'Kotov' from dual where 1 = 0), 'Peter', '22');

現在,該語句將包含5個參數:

P: Kotov -- Relevant
P: 1     -- Irrelevant
P: 0     -- Irrelevant
P: Peter -- Relevant
P: 22    -- Relevant

您可能想使用生成的FiletestRecord ,該文件本質上是Map<Field<?>, ?> ,可以通過調用record.insert()record.update()將其轉換為INSERTUPDATE語句。

ctx.insertInto(FILETEST).set(filetestRecord).execute();

暫無
暫無

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

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