当Statemetn,PreparedStaement都能实现时,用哪个? 当Statemetn,PreparedStaement都能实现时,用哪个?你一般用哪个? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我找的:3、在动态SQL或有时间限制的命令中使用Statement对象在执行SQL命令时,我们有二种选择:可以使用 PreparedStatement对象,也可以使用Statement对象。无论多少次地使用同一个SQL命令,PreparedStatement都只对它解析和编译一次。当使用Statement对象时,每次执行一个SQL命令时,都会对它进行解析和编译。这可能会使你认为,使用 PreparedStatement对象比使用Statement对象的速度更快。然而,我进行的测试表明,在客户端软件中,情况并非如此。因此,在有时间限制的SQL操作中,除非成批地处理SQL命令,我们应当考虑使用Statement对象。此外,使用Statement对象也使得编写动态SQL命令更加简单,因为我们可以将字符串连接在一起,建立一个有效的SQL命令。因此,我认为,Statement对象可以使动态SQL命令的创建和执行变得更加简单。 5、利用PreparedStatement对象提高数据库的总体效率在使用PreparedStatement对象执行SQL命令时,命令被数据库进行解析和编译,然后被放到命令缓冲区。然后,每当执行同一个PreparedStatement对象时,它就会被再解析一次,但不会被再次编译。在缓冲区中可以发现预编译的命令,并且可以重新使用。在有大量用户的企业级应用软件中,经常会重复执行相同的SQL命令,使用 PreparedStatement对象带来的编译次数的减少能够提高数据库的总体性能。如果不是在客户端创建、预备、执行 PreparedStatement任务需要的时间长于Statement任务,我会建议在除动态SQL命令之外的所有情况下使用 PreparedStatement对象。 “有时间限制的SQL操作”是怎样的一种情况?“然而,我进行的测试表明,在客户端软件中,情况并非如此。”那服务器端软件呢? 6、在成批处理重复的插入或更新操作中使用PreparedStatement对象如果成批地处理插入和更新操作,就能够显著地减少它们所需要的时间。Oracle提供的Statement和 CallableStatement并不真正地支持批处理,只有PreparedStatement对象才真正地支持批处理。我们可以使用 addBatch()和executeBatch()方法选择标准的JDBC批处理,或者通过利用PreparedStatement对象的 setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的批处理机制,可以以如下所示的方式调用setExecuteBatch():PreparedStatement pstmt3D null; try { ((OraclePreparedStatement) pstmt).setExecuteBatch(30); ... pstmt.executeUpdate(); }调用setExecuteBatch()时指定的值是一个上限,当达到该值时,就会自动地引发SQL命令执行,标准的executeUpdate()方法就会被作为批处理送到数据库中。我们可以通过调用PreparedStatement类的sendBatch()方法随时传输批处理任务。//OraclePreparedStatement这个类是什么类?API里好象找不到 我有个老师他说其实第二个在实际工作中没有第一个好并不是像api上面说的那样,可以在重复使用中得到充分的利用 PreparedStatement 本身就是 Statement 的子类,Statement 能实现的 PreparedStatement 也能实现,但是从效率、安全性、代码可读性来看,我选 PreparedStatement,说实话,我从来没有用过 Statement,都是使用 PreparedStatement 的,哪怕是一个没有参数的语句。 毫无疑问用第二个,也就是PreparedStaement。因为,在实际的使用当中,就单独一次的想数据库访问,两者的速度差别不是很明显。而在多次,同结构的SQL语句来访问数据库的时候,PreparedStaement的效率会明显提升。就以上两点原因,一致选用PreparedStaement。 用PreparedStatement,不需要考虑特殊字符的转换,比较方便。 JDBC编程我们一般用PreparedStatement安全性方便公司也几乎是终于定的 【Netbeans】Java桌面应用程序如何正确使用Proguard进行混淆 一行代码不知是什么意思 这段程序是不是少点什么! 请问在java中如何调用其它的应用程序 各位大侠帮忙一下哈!!! 帮忙看看这个问题? classpath 的设置问题. 我发现在editplus上可以直接编译并且运行java程序 请提供一中介绍UML的好书?在线等待 关于一个小程序的问题 一个简单的问题! 帮忙查个错,很简单
3、在动态SQL或有时间限制的命令中使用Statement对象在执行SQL命令时,我们有二种选择:可以使用 PreparedStatement对象,也可以使用Statement对象。无论多少次地使用同一个SQL命令,PreparedStatement都只对它解析和编译一次。当使用Statement对象时,每次执行一个SQL命令时,都会对它进行解析和编译。这可能会使你认为,使用 PreparedStatement对象比使用Statement对象的速度更快。然而,我进行的测试表明,在客户端软件中,情况并非如此。因此,在有时间限制的SQL操作中,除非成批地处理SQL命令,我们应当考虑使用Statement对象。此外,使用Statement对象也使得编写动态SQL命令更加简单,因为我们可以将字符串连接在一起,建立一个有效的SQL命令。因此,我认为,Statement对象可以使动态SQL命令的创建和执行变得更加简单。
5、利用PreparedStatement对象提高数据库的总体效率在使用PreparedStatement对象执行SQL命令时,命令被数据库进行解析和编译,然后被放到命令缓冲区。然后,每当执行同一个PreparedStatement对象时,它就会被再解析一次,但不会被再次编译。在缓冲区中可以发现预编译的命令,并且可以重新使用。在有大量用户的企业级应用软件中,经常会重复执行相同的SQL命令,使用 PreparedStatement对象带来的编译次数的减少能够提高数据库的总体性能。如果不是在客户端创建、预备、执行 PreparedStatement任务需要的时间长于Statement任务,我会建议在除动态SQL命令之外的所有情况下使用 PreparedStatement对象。
“然而,我进行的测试表明,在客户端软件中,情况并非如此。”那服务器端软件呢?
try {
((OraclePreparedStatement)
pstmt).setExecuteBatch(30);
...
pstmt.executeUpdate();
}调用setExecuteBatch()时指定的值是一个上限,当达到该值时,就会自动地引发SQL命令执行,标准的executeUpdate()方法就会被作为批处理送到数据库中。我们可以通过调用PreparedStatement类的sendBatch()方法随时传输批处理任务。
//OraclePreparedStatement这个类是什么类?API里好象找不到
并不是像api上面说的那样,可以在重复使用中得到充分的利用
因为,在实际的使用当中,就单独一次的想数据库访问,两者的速度差别不是很明显。
而在多次,同结构的SQL语句来访问数据库的时候,PreparedStaement的效率会明显提升。
就以上两点原因,一致选用PreparedStaement。
安全性
方便
公司也几乎是终于定的