首页 > Java > java教程 > 准备好的语句可以处理 SQL 查询中的动态列名吗?

准备好的语句可以处理 SQL 查询中的动态列名吗?

Linda Hamilton
发布: 2024-12-10 09:20:15
原创
278 人浏览过

Can Prepared Statements Handle Dynamic Column Names in SQL Queries?

对动态列名称使用准备好的语句

使用数据库查询时,在尝试指定动态列名称时会出现常见的困境。本文探讨了通过预准备语句传递变量列名的可能性,特别是在使用 Java 的 MySQL 中。

挑战语句

当用户尝试执行预准备语句时,列名作为字符串传入:

但是,生成的 SQL 语句将列名显示为文字的一部分字符串:

但是,所需的输出是将列名称作为单独的列:

解决方案讨论

值得注意的是,这种做法表明数据库设计存在缺陷。理想情况下,用户不应该知道列名称。更好的解决方案是在数据库中创建一个显式列来存储“列名称”。

不幸的是,无法将列名称设置为PreparedStatement 值。准备好的语句只能用于设置列值。

如果不可避免地要使用变量列名,则需要清理输入并手动构造 SQL 字符串。这涉及引用各个列名称并使用 String#replace() 对列名称中的引号进行转义。

以上是准备好的语句可以处理 SQL 查询中的动态列名吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板