繁体   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