Java中preparedStatement的错误使用
2012-08-18 00:41
120 查看
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中 CopyOnWriteArrayList 的使用与ConcurrentModificationException错误的避免
- linux下使用jni实现c++调用java程序(4)DestroyJavaVM出现错误
- 关于Java中的继承和组合的一个错误使用的例子
- 关于Java中“+”加运算符和“<<”向前移位运算符混合使用时出现的错误
- Java synchronized使用的 正确事例和错误事例
- Java swing使用皮肤后出现Component creation must be done on Event Dispatch Thread错误解决方法
- Eclipse使用Maven创建普通Java工程时错误:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart:RELEASE from any of the configured repositories.
- 关于Recyclerview使用时的一个错误java.lang.NoSuchMethodError: No static method getMatrix(Landroid/view/View;)
- myeclipse8.6使用jstl遇到的错误The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in eit
- java 中jdbc的使用练习-错误 mysql access denied for user odbc @localhost
- java使用JNI调用DLL动态库错误
- 用javah 导出类的头文件, 常见的错误及正确的使用方法
- Java中PreparedStatement的错误使用
- JUnit-4.11使用报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing错误 .
- 关于Recyclerview使用时的一个错误java.lang.NoSuchMethodError: No static method getMatrix(Landroid/view/View;)
- 很好的一篇文章,我使用java 自带的ldap api 一直报32错误,使用novell后正常
- com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“java
- JAVA Scanner 用法注意事项(scanner 使用错误:Exception in thread "main" java.util.NoSuchElementExceptionation )
- Android使用achart绘图框架出现java.lang.NoClassDefFoundError错误解决方式
- win7下使用matlab7.1,解决java错误提示。