如何为大查询生成java准备语句,如查询,或如何在大查询中转义参数
我在我的项目中使用大查询,并根据一些用户输入准备一个查询,这些用户输入作为查询中的参数 我们如何才能以最好的方式做到这一点 对于JavaJDBC,我们有,所以我们使用prepared语句 他们是不是像为大查询准备了语句如何为大查询生成java准备语句,如查询,或如何在大查询中转义参数,java,sql,google-app-engine,escaping,google-bigquery,Java,Sql,Google App Engine,Escaping,Google Bigquery,我在我的项目中使用大查询,并根据一些用户输入准备一个查询,这些用户输入作为查询中的参数 我们如何才能以最好的方式做到这一点 对于JavaJDBC,我们有,所以我们使用prepared语句 他们是不是像为大查询准备了语句 或者您可以提供一种最佳的方法来转义此用户输入,以便将其添加到大查询的sql查询中大查询不支持预处理语句(或任何类似语句),因此,最有效的解决方案可能是将查询字符串分解成片段,并将它们与用户提供的值连接在一起。连接字符串的最快方法似乎只是使用“+”运算符,而不是浏览这些旧文章:
或者您可以提供一种最佳的方法来转义此用户输入,以便将其添加到大查询的sql查询中大查询不支持预处理语句(或任何类似语句),因此,最有效的解决方案可能是将查询字符串分解成片段,并将它们与用户提供的值连接在一起。连接字符串的最快方法似乎只是使用“+”运算符,而不是浏览这些旧文章:
@param_name
和位置参数)与?
一起使用
文档中的Java示例:
String query =
"SELECT word, word_count\n"
+ "FROM `bigquery-public-data.samples.shakespeare`\n"
+ "WHERE corpus = @corpus\n"
+ "AND word_count >= @min_word_count\n"
+ "ORDER BY word_count DESC";
// Note: Standard SQL is required to use query parameters.
QueryJobConfiguration queryConfig =
QueryJobConfiguration.newBuilder(query)
.addNamedParameter("corpus", QueryParameterValue.string(corpus))
.addNamedParameter("min_word_count", QueryParameterValue.int64(minWordCount))
.build();
为什么您首先需要转义用户输入?听起来您正在使用BigQuery作为传统的RDBMS。您可以检查如何转义用户输入。在进行sql查询时,我们需要一些用户输入,以根据他们想要的最佳结果过滤结果。所以我希望投入不会产生任何问题。现在我正在使用StringEscapeUtils.escapeJavaScript。它与googleBigqueryBigQuery的规则相同,现在支持参数化查询-请查看我的回复。