用prepareStatement 设置参数,速度超级慢,还不如直接拼接字符串,有人能告诉我为什么吗?
解决方案 »
- jTable的导入问题
- Vector里这个方法public Enumeration<E> elements()有用吗?
- 文本框键盘如何屏蔽输入?
- -----------劳驾各位 再问个问题----------------
- 关于struts中无法找到Action的问题,谢谢解答!!
- 在线求助 System.out.println(spa1--<=0&&day1<cou1?day1<10?" 0"+day1++:" "+day1++:" ");怎么运行的?
- 困惑!new Object[0];
- 怎样弹出一个对话框,我只知道在delphi里用showmessage('hello');,不知在java里怎么写?
- 如何实现dos下的命令格式???
- 请教一个简单的问题!
- java 加载jdbc出现not found异常,求解决!急!!!!!!
- java,如何找数组在另一个数组中没有出现的元素
能否把你的SQL部分贴出来?
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秒
i++;
ps.setObject(i, object);
}
同时,如果有人刻意提交恶意表单来改变你sql语句的原意,就会查询出你数据库里的一些保密的信息,这就是sql注入。
为什么你的会这么慢 等高手。