`
sunajax
  • 浏览: 34619 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

PreparedStatement使用注意

    博客分类:
  • Java
阅读更多
先看如下代码:
PreparedStatement pstmt = conn.prepareStatement(sql);
//执行查询
pstmt.executeQuery(sql);
//执行更新
pstmt.executeUpdate(sql);


使用上面的代码在不同数据库中分别出现错误如下:
(1)Oracle
执行查询:ORA-03115: unsupported network datatype or representation
执行更新:ORA-01008: not all variables bound
(2)MySQL
MySQL Exception:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1

(3)SQLServer
SQLServer 2000 Exception: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid call Statement method: {0}


原因:PreparedStatement在创建时已经缓存了sql语句,以便后面设置参数,所以你在执行查询或更新时在附加sql语句,像这样:pstmt.executeQuery(sql),就不会设置参数,导致报错!
分享到:
评论
2 楼 zk279444107 2011-04-20  
确实是细微的地方,我还以为是我的数据驱动包有问题,囧。。。
1 楼 lx281 2010-07-08  
多谢,我也遇到这个问题,百思不得其解啊

相关推荐

    Java使用PreparedStatement接口及ResultSet结果集的方法示例

    主要介绍了Java使用PreparedStatement接口及ResultSet结果集的方法,结合实例形式分析了PreparedStatement接口及ResultSet结果集的相关使用方法与操作注意事项,需要的朋友可以参考下

    jdbc连接数据库的方式2

     在执行SQL命令时,我们有二种选择:可以使用PreparedStatement对象,也可以使用Statement对象。无论多少次地使用同一个SQL命令,PreparedStatement都只对它解析和编译一次。当使用Statement对象时,每次执行一个...

    2014_05_12 javabean类型的辅助类存储传输接收数据.

    //使用executeupdate方法添加信息(注意括号和单双引号的打法) //使用preparedstatment进行数据库事务的预处理 psta= connection.prepareStatement(sqlstr); psta.setString(1, username);

    java开发中的一些常用小技巧

    1.多使用PreparedStatement代替Statement这样可以避免在拼接字符串的时候出现 "select * from emp where name = '"+name+"'"单引号过多的情况 2 sql语句过长的时候尽量避免使用sql="str1"+"str2"; 而使用...

    sql2005 批量更新问题的解决方法

    首先注意Statement 和PreparedStatement的问题 Statement sm = cn.createStatement(); sm.addBatch(sql1); sm.addBatch(sql2); … sm.executeBatch() 用Statement的好处就是每次可以直接传一个SQL语句进去,不用管...

    疯狂JAVA讲义

    5.8.1 使用继承的注意点 155 5.8.2 利用组合实现复用 156 学生提问:使用组合关系来实现复用时,需要创建两个Animal对象,是不是意味着使用组合关系时系统开销更大? 159 5.9 初始化块 159 5.9.1 使用初始化块 ...

    day01_eesy_01mybatis.zip

    PreparedStatement ResultSet Spring的JdbcTemplate: Spring中对jdbc的简单封装 Apache的DBUtils: 它和Spring的JdbcTemplate很想,也是对Jdbc的简单封装 以上这些都不是框架 JDBC是规范 Spring的...

    c3p0:一个成熟的,高度并发的JDBC连接池库,支持缓存和重用PreparedStatements

    c3p0 c3p0是成熟的,高度并发的JDBC连接池库,支持缓存和重用PreparedStatements。 您可以选择根据或获得许可。 c3p0现在在维护。... 注意: c3p0在通过Sonatype的Central Security Project报告安全漏洞方面具有丰

    使用JDBC在MySQL数据库中如何快速批量插入数据

    使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(10W+),如何提高效率呢? 在JDBC编程接口中Statement 有两个方法特别值得注意: void addBatch() throws SQLException Adds a set of ...

    二十三种设计模式【PDF版】

    因为很多人没有注意到这点,学完 Java 基础语言就直接去学 J2EE,有的甚至鸭子赶架,直接使用起 Weblogic 等具体 J2EE 软 件,一段时间下来,发现不过如此,挺简单好用,但是你真正理解 J2EE 了吗?你在具体案例中的...

    java面试题

    4:抽象:忽略与当前主题无关的那些方面,将注意力集中在与当前目标有关的方面 运行时异常和一般异常有何异同? 答:运行时异常时(JVM)java虚拟机在运行过程中发生的问题,比如:内存溢出等问题。这类异常没法...

    涵盖了90%以上的面试题

    使用switch时有哪些注意事项 instanceof有什么作用 什么是不可变类 类型转换 Math类的round,ceil和floor方法 值传递和引用传递有什么不同? char型变量是否可以存储一个中文汉字 s=null和s=” ”是否相同 new String...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ Java面试题34.jdbc中preparedStatement比Statement的好处.mp4 │ Java面试题35.数据库连接池的作用.mp4 │ Java面试题36.HTML.mp4 │ Java面试题37.简单介绍了一下Ajax.mp4 │ Java面试题38.js和JQuery的关系.mp4...

    网络及数据库编程设计.doc

    JAVA程序设计实验报告 ... " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "报告提交日期 " " (注意:内容写不下时可另附页。) 附: // DBconfig.java(续) /** * 建立连接 * @return conn */ pub

    JAVA面试题最全集

    9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet技术 1.描述JSP和Servlet的区别、共同点、各自应用的范围 2.在Web开发中...

    大数据java操作hive.pdf

    在代码中添加 注意:引的包全是sql包 引完后会报异常,抛出异常即可 如出现这个问题 解决⽅法: <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.7</version> <scope>...

    Java面试宝典2020修订版V1.0.1.doc

    使用时候还应注意什么? 14 6、short s1=1;s1=s1+1;有什么错?short s1 = 1;s1+=1 有什么错? 14 7、char为什么能存贮一个汉字? 15 9、final关键字的用法? 15 10、静态变量和实例变量的区别? 15 11、面向对象的...

    Java开发详解.zip

    031311_【第13章:Java类集】_Map接口使用的注意事项笔记.pdf 031312_【第13章:Java类集】_IdentityHashMap类笔记.pdf 031313_【第13章:Java类集】_SortedMap类笔记.pdf 031314_【第13章:Java类集】_集合工具类:...

    springmybatis

    查询出列表,也就是返回list, 在我们这个例子中也就是 List<User> , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的 ...

Global site tag (gtag.js) - Google Analytics