簡體   English   中英

如何將字符串變量添加到 SQL 查詢 - Java、SpringBoot

[英]How to add String variable to SQL query - Java, SpringBoot

我有一個看起來像這樣的 SQL 查詢:

public void getUser(String userId, String dbName) {

String q = "CREATE TEMPORARY TABLE \"TEST_DATABASE\".\"PUBLIC\".\"USER_TABLE_TEMP\" AS SELECT \"USERID\", \"FIRSTNAME\", \"LASTNAME\" from \"TEST_DATABASE\".\"PUBLIC\".\"USER\"";

jdbcTemplatePerBrand.values().forEach(tab -> tab.query(q, s -> {}));
}

我試圖將自定義dbName傳遞給查詢,我嘗試過這樣的事情:

 public void getUser(String userId, String dbName) {

String q = "CREATE TEMPORARY TABLE \"?\".\"PUBLIC\".\"USER_TABLE_TEMP\" AS SELECT \"USERID\", \"FIRSTNAME\", \"LASTNAME\" from \"?\".\"PUBLIC\".\"USER\"";

jdbcTemplatePerBrand.values().forEach(tab -> tab.query(q, s -> {}, dbName));

}

我收到以下錯誤:

Database '"?"' does not exist or not authorized.

嘗試以下方法。

String q = "CREATE TEMPORARY TABLE "+ dbName +".\"PUBLIC\".\"USER_TABLE_TEMP\" AS SELECT \"USERID\", \"FIRSTNAME\", \"LASTNAME\" from \"?\".\"PUBLIC\".\"USER\"";

我的問題的解決方案是將變量作為+dbName+到我的查詢中。

困擾我的是" " ,我不知道如何處理。

我正在使用 Snowflake,我的數據庫名稱寫在" "

所以解決方案是我這樣做:

public void getUser(String userId, String dbName) {

 String q = "CREATE TEMPORARY TABLE \""+dbName+"\".\"PUBLIC\".\"USER_TABLE_TEMP\" AS SELECT \"USERID\", 
 \"FIRSTNAME\", \"LASTNAME\" from \"TEST_DATABASE\".\"PUBLIC\".\"USER\"";

 jdbcTemplatePerBrand.values().forEach(tab -> tab.query(q, s -> {}));

}

所以我從中學到的是,如果您想向查詢添加變量,請使用+variableName+但要始終注意您的數據庫名稱在您使用的數據庫中的寫入方式。

另外,另一個注意

例如,我正在用 Java 代碼編寫對 Snowflake 的查詢。

對於我想放在語句中的變量,例如:

CREATE TABLE +tableName+我確實使用+tableName+方法

但是當我想將它添加到我的WHERE語句中時,我使用的是? 標志。

String qu = "CREATE TEMPORARY TABLE \""+dbName+"\".\"PUBLIC\".\"USER_TABLE_TEMP\" AS SELECT \"ID\", \"FIRST_NAME\", \"LAST_NAME\" from \""+dbName+"\".\"PUBLIC\".\"USER_TABLE\"\n" +
                "                where \"ID\" = ?\n" +
                "                union all\n" +
                "                select \"ID\",\"ACCOUNT_NAME\", \"ACCOUNT_NUMBER\" from \""+dbName+"\".\"PUBLIC\".\"ACCOUNT_DATA\"\n" +
                "                where \"ID\" = ?";*/

因此,找出適合您的數據庫的方法並使用它:)

這是雪花/Java 示例。

暫無
暫無

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

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