社区
Java SE
帖子详情
PreparedStatement里如何使引号里的?成为占位符
aniwn
2007-06-21 06:26:45
类似与 select ... where info like '%?%'
这里的问号是不被看作是占位符的,所以当set的时候会报错java.sql.SQLException: Parameter index out of range
如何不用sql语句的拼接解决这个问题
谢谢
...全文
825
11
打赏
收藏
PreparedStatement里如何使引号里的?成为占位符
类似与 select ... where info like '%?%' 这里的问号是不被看作是占位符的,所以当set的时候会报错java.sql.SQLException: Parameter index out of range 如何不用sql语句的拼接解决这个问题 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
aniwn
2007-06-26
打赏
举报
回复
大家写db的时候要注意注入攻击啊
joejoe1991
2007-06-22
打赏
举报
回复
直接在PreparedStatement之前把语句保存到String里不是更方便么
tdy1234
2007-06-22
打赏
举报
回复
用连接 好了
mx1029
2007-06-22
打赏
举报
回复
PreparedStatement pst = conn.prepareStatement("select ... where info like ?");
pst.setString(1, "%"+name+"%");
huoyin
2007-06-22
打赏
举报
回复
PreparedStatement pst = conn.prepareStatement("select ... where info like ?");
pst.setString(1, "%"+name+"%");
上面的这个语句少写了单引号,正确地应当是
PreparedStatement pst = conn.prepareStatement("select ... where info like ?");
pst.setString(1, "'%"+name+"%'");
fengmingjie
2007-06-22
打赏
举报
回复
PreparedStatement pst = conn.prepareStatement("select ... where info like ?");
param= param+"?";
pst.setString(1, "%"+param+"%");
可以在setString之前构造你的字串,然后传入
yingzi107
2007-06-22
打赏
举报
回复
程序员群 41801837
CrazyGou
2007-06-22
打赏
举报
回复
拼接吧~
joejoe1991
2007-06-21
打赏
举报
回复
学习一下
士元
2007-06-21
打赏
举报
回复
||
believefym
2007-06-21
打赏
举报
回复
字符串连接吧
新版通俗易懂的JDBC升级版教程(含配套资料)
本套视频教程共57小结,涵盖JDBC的方方面面,包括手动获取数据库连接的多种方式、使用数据库连接池获取连接、
Statement
与Pre
pa
red
Statement
的对比使用、sql注入问题讲解、Blob字段的操作、高效的批量插入、DAO设计模式、使用dbutils提供的相关工具类等。此外,还对数据库事务进行详解,利用反射及 JDBC 元数据编写通用的查询方法等企业级开发内容。源码级讲授DBUtils 工具类的实现思想,DEBUG 调试其运行过程。示例代码专业、实用,并配备多个课后习题,使学员能站在更高层次上深入掌握 JDBC 技术。
mysql Pre
pa
red
Statement
占位符
注意事项
注意事项 下标从1开始 赋值的时候不需要为字符串变量的两边加上’’ 直接ps.setString(1, “liguang”);
占位符
只能替换值类型,不能替换表名、字段名或者其他关键词。 Pre
pa
red
Statement
会为
占位符
?的两边自动加上单
引号
,这样会使得SQL语句不可执行,比如使用将表名设置为
占位符
,数据库执行sql语句时,表名会用单
引号
引起来,这样会使得sql语句执行出错或者查询不...
关于SQL语句pre
pa
re
Statement
预编译"?"
占位符
问题
关于SQL语句pre
pa
re
Statement
预编译"?"
占位符
问题Connection中的create
Statement
和 pre
pa
re
Statement
区别为什么会有
占位符
"?"(重点到了)请看下方结语 Connection中的create
Statement
和 pre
pa
re
Statement
区别 首先说下为什么常用的是Pre
pa
red
Statement
,因为Pre
pa
red
...
Pre
pa
red
Statement
预编译无法用?
占位符
替换表名和字段名
Pre
pa
red
Statement
是
Statement
的改良版,具有预编译功能,方便使用,运行速度快。 可以通过?
占位符
把字段值替换,之后通过setXXX方法,注入字段值。 但是?
占位符
只能替换字段值,不能替换表名、字段名或者其他关键词。
java的JDBC中
占位符
的使用问题, Pre
pa
red
Statement
的 ?
占位符
不可用来设置字段名,表名
1. 博主今天被一个问题给困扰半天 就是当 String sql = "select * from user where ?=? "; 在jdbc中的sql语句这样写的时候 控制台 一条数据都查询不出来,究其原因就是?不能作为字段名和表名的
占位符
Pre
pa
red
Statement
会为
占位符
?的两边自动加上单
引号
,这样会使得SQL语句不可执行,比如使用将表名设置为
占位符
,数据库执行sql语...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章