Java中preparedStatement的错误使用
来源:互联网 发布:动量矩定理答案知乎 编辑:程序博客网 时间:2024/04/30 16:22
java中PreparedStatement的错误使用
今天在翻看一个以前项目的代码的时候发现了一个对PreparedStatement的错误使用,为了避免自己以后犯类似的错误,
特别记录一下!首先先看下面的增删改查的代码:
public int insert(String sql) throws Exception {
Logger.getLogger(this.getClass()).info(sql);
return conn.prepareStatement(sql).executeUpdate();
}
/**
* 更新记录
*
* @param sql
* @return
* @throws Exception
*/
public int update(String sql) throws Exception {
Logger.getLogger(this.getClass()).info(sql);
return conn.prepareStatement(sql).executeUpdate();
}
/**
* 删除记录
*
* @param sql
* @return
* @throws Exception
*/
public int delete(String sql) throws Exception {
Logger.getLogger(this.getClass()).info(sql);
return conn.prepareStatement(sql).executeUpdate();
}
/**
* 查询记录
*
* @param sql
* @return ResultSet
* @throws Exception
*/
public ResultSet executeQuery(String sql) throws Exception {
Logger.getLogger(this.getClass()).info(sql);
ResultSet rs = conn.prepareStatement(sql).executeQuery();
return rs;
}
也许你看了很久后会说,这写的没什么大问题啊,其实不然 这里面有一个很影响效率的地方
大家都知道prepareStatement 是编译的 SQL 语句的对象。但是怎样才能真正的起到预编译的作用呢?
以前我是不怎么了解,但是现在算是比较明白了吧,
Connection类中的prepareStatement(sql)可以创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。
但是这个sql语句必须是用占位符?来表示参数并且
s.setInt(1,1);--(设置values中的值,1,2,3代表顺序,后面的表示要插入的值)
s.setString(2,"admin");
s.setString(3,"admin");
这样才能真正启到预编译的作用,如果插入类似数据的时候就会直接使用编译好的sql,从而提高效率。
但是如果向上面代码那样写的话Conn.prepareStatement(sql).executeUpdate();,不但起不到提高查询速度的
作用,而且会在数据库中产生大量的预编译语句,占用了大量的空间。
所以,希望大家以后能够注意一下,也警示自己以后不要犯类似的问题!
- Java中preparedStatement的错误使用
- java数据库preparedStatement的使用
- 关于JSP中PreparedStatement的使用
- JDBC中PreparedStatement接口的使用
- java中PreparedStatement类的setString用法
- java中PreparedStatement和Statement的区别
- Java中JDBC的PreparedStatement用法
- java中PreparedStatement的批处理问题
- Java中PreparedStatement和Statement的区别
- java中PreparedStatement和Statement的区别
- java中PreparedStatement和Statement的区别
- PreparedStatement中使用like
- Java中使用PreparedStatement操作SQL Server时nvarchar的问题
- 使用 preparedstatement 的好处
- PreparedStatement的使用
- PreparedStatement的使用
- PreparedStatement.addbatch()的使用
- PreparedStatement的使用
- hdu 3333
- 关于Struts2的某些简单总结
- TextView 添加删除线
- Eclipse中安装Python插件时报错
- Fedora 17, Wireless network problem with Atheros AR5B97
- Java中preparedStatement的错误使用
- 新来
- 二分查找变形
- 【Linux】Redhat5.4基本使用
- Java批处理写数据库的实例代码
- Android(7) - 控件(View)之ZoomControls, Include, VideoView, WebView, RatingBar, Tab, Spinner, Chronomete
- 【SPFA】 hdu1596 find the safest road
- 永不停止的技术学习
- uva 10341 - Solve It