在Java和JDBC驱动程序中使用准备好的语句和变量绑定Order By

雷维克:

我正在使用

  1. jdbcTemplate建立与mySQL DB的JDBC连接
  2. 准备好的语句,以尽可能保护自己免受SQL注入攻击
  3. 需要接受来自用户的请求,以对十几种不同列中的任何数据进行排序
  4. 以下陈述

    jdbcTemplate.query("SELECT * FROM TABLE1 ORDER BY ? ?", colName, sortOrder);
    

当然这是行不通的,因为变量绑定不应仅指定列名称,而仅指定查询中表达式的参数值。

那么...人们如何解决这个问题?仅仅用Java代码进行排序似乎是一个简单的解决方案,但是由于我得到了一个用于该列进行排序的变量字符串,并且一个变量告诉了我排序的顺序...。盖。似乎应该以一种常见的模式来解决这个问题。

Oleksandr Bondarenko:

占位符?只能用于参数值,而不能用于列和排序顺序方向。因此,要做到这一点的标准方法是尖如这里是使用字符串#格式()或类似的东西到你的列名,订单价值附加到您的查询。

另一个选择是使用Spring Data JPA,您可以在其中将类型为Sort的实例作为参数提供给方法,该实例可以包含数据库排序所需的所有信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Cassandra中使用Datastax Java驱动程序有效地使用准备好的语句?

在postgres jdbc驱动程序中记录准备好的sql语句

使用准备好的语句时,Cassandra中的python驱动程序出现问题

Matlab数据库准备好的语句和绑定变量

在 Java 中使用准备好的语句更改语句

在PHP和MySQLi中使用使用准备好的语句和参数化查询

Java + JDBC:准备好的语句失败

使用 php 和准备好的语句写入 mysql

EXTJS 5和PHP使用准备好的语句创建

使用准备好的语句和 fetchAll() 显示到表

使用 PHP 和 MSSQL 准备好的语句

准备好的语句和 setString

Like子句和准备好的语句

来自准备好的语句的 Cassandra PHP 驱动程序 502 badgateway

pq驱动程序:准备好的语句不存在

PHP Postgres PDO驱动程序不支持准备好的语句吗?

绑定变量的数量与 php 和 android 中准备好的语句中的字段数量不匹配

我们应该始终在MySQL和php中使用准备好的语句还是何时使用这些语句?

即使匹配,准备好的语句也不匹配绑定变量?

准备好的语句在 LIKE 子句中缺少绑定变量

在mysql jdbc准备好的语句中使用“零”时间戳(在where子句中)

如何在准备好的语句中绑定“DEFAULT”和“NULL”?

如何在 Django 和 Python 中使用准备好的语句查询将数据插入数据库

Java JDBC-多个准备好的语句批量插入

Cassandra Node.js DataStax驱动程序不会通过准备好的语句执行返回新添加的列

如何使用准备好的语句动态绑定参数?

是否可以对所有准备好的语句和选择语句使用UNION ALL?

使用 PDO 准备好的语句和 htmlspecialchars 是否足以防止 XSS 和 SQL 注入?

PDO在准备好的语句中使用引号来调用mysql程序?