![](/img/trans.png)
[英]How to add a string variable to a SQL query on a jdbc firebird connection
[英]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.