社区
Java SE
帖子详情
prepareStatement 的问题
luoxudong121316
2012-07-25 05:03:35
用prepareStatement 设置参数,速度超级慢,还不如直接拼接字符串,有人能告诉我为什么吗?
...全文
166
8
打赏
收藏
prepareStatement 的问题
用prepareStatement 设置参数,速度超级慢,还不如直接拼接字符串,有人能告诉我为什么吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
learningBird
2012-07-26
打赏
举报
回复
只知道prepareStatement一般比拼接快
为什么你的会这么慢 等高手。
sl_nevergiveup
2012-07-26
打赏
举报
回复
能用prepareStatement就一定要用 ,尽量少用字符串拼接,假设有一个发表文章的场景,文章的内容通过编辑器会带有各种样式,所以真正插入到数据库里的是HTML的代码,会带有许多单引号,如果使用字符串拼接的话这些单引号会改变sql语句的原意,从而造成插入失败。
同时,如果有人刻意提交恶意表单来改变你sql语句的原意,就会查询出你数据库里的一些保密的信息,这就是sql注入。
luoxudong121316
2012-07-26
打赏
举报
回复
这句有问题吗?
[Quote=引用 5 楼 的回复:]
for (Object object : param) {
i++;
ps.setObject(i, object);
}
[/Quote]
wwwcomcn123
2012-07-25
打赏
举报
回复
for (Object object : param) {
i++;
ps.setObject(i, object);
}
luoxudong121316
2012-07-25
打赏
举报
回复
Connection connection = getConn();
PreparedStatement ps = null;
ResultSet records = null;
try {
String hql = "select * from (select rownum rid,m.* from " +
"(select t.vehiclelsh,t.plateinfo,t.platetype,t.passtime,t.vehiclespeed from bayonet_vehiclepass t" +
" where passtime>to_date('012-2-25 0:00:00','yyyy-MM-dd hh24:mi:ss') and passtime < to_date('2012-7-25 0:00:00','yyyy-MM-dd hh24:mi:ss')" +
" and vehiclespeed > ? and vehiclespeed < ? order by passtime desc) m where rownum < 35464 ) s where s.rid > 35453";
List param = new ArrayList();
param.add(0);
param.add(200);
String hql1 = "select count(*) from bayonet_vehiclepass";
ps = connection.prepareStatement(hql);
int i = 0;
for (Object object : param) {
i++;
ps.setObject(i, object);
}
Long l1 = System.currentTimeMillis();
records = ps.executeQuery();
System.out.println(System.currentTimeMillis()-l1);
} catch (Exception e) {
e.printStackTrace();
} finally {
closeConn(ps, records, connection);
}
我这边只设置两个参数就很慢了,如果把时间也设置上去就更慢了,要13秒左右,如果用拼接字符串就只要不到1秒
brightyq
2012-07-25
打赏
举报
回复
应该影响不大吧。怎么会呢?
屌丝哥
2012-07-25
打赏
举报
回复
同样的数据条件下肯定prepareStatement要快,不知LZ为何这般慢
能否把你的SQL部分贴出来?
SpringHiSay
2012-07-25
打赏
举报
回复
静等高手解答...
pre
pa
re
Statement
和
Statement
的区别
pre
pa
re
Statement
和
Statement
的区别
Java数据库JDBC——pre
pa
re
Statement
的用法和解释
一、pre
pa
re
Statement
的用法和解释 1.Pre
pa
red
Statement
是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程 2.使用
Statement
对象。在对数据库只执行一次性存取的时侯,用
Statement
对象进行处理。...
面试题:
Statement
与Pre
pa
re
Statement
的区别
使用Pre
pa
re
Statement
对象执行sql时,sql被数据库进行解析和编译,然后被放到命令缓冲区,每当执行同一个Pre
pa
re
Statement
对象时,它就会被解析一次,但不会被再次编译。在缓冲区可以发现预编..
create
Statement
和 pre
pa
re
Statement
的区别:
1、pre
pa
re
Statement
会先初始SQL,先把这个SQL提交到数据库中进行预处理,多次使用可提高效率; 2、create
Statement
不会初始化,没有预处理; 变量上: pre
pa
re
Statement
可以在SQL中用 ?替换变量,可以保证SQL安全...
Pre
pa
re
Statement
和
Statement
的对比
Pre
pa
re
Statement
和
Statement
的对比
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章