java与.net的数据库沟通之比较

本文探讨了Java中的PreparedStatement如何与数据库进行更高效、灵活的交互。PreparedStatement允许将SQL语句的准备和处理阶段分开,通过参数标记实现动态SQL,提高性能,并防止SQL注入。文中介绍了prepareStatement方法的使用,参数设置以及元数据接口ParameterMetaData的应用,对比.NET中的数据适配器通讯方式。
摘要由CSDN通过智能技术生成

(java)传送给数据库的 SQL 语句通过一个包含两个步骤的过程来返回结果。首先准备它们,然后处理它们。借助 Statement 对象,这两个阶段对应用程序而言变成一个阶段。

PreparedStatement 允许将这两个步骤分开。准备步骤在创建对象时发生,而处理步骤在对 PreparedStatement 对象调用 executeQuery、executeUpdate 或 execute 方法时发生。

如果不添加参数标记,能够将 SQL 处理分割成单独的阶段并没有意义。参数标记放在应用程序中,从而使它能够告诉数据库它在准备时并不具有特定的值,但它在处理之前提供一个值。在 SQL 语句中,参数标记是使用问号表示的。

通过使用参数标记,有可能创建用于特定请求的一般 SQL 语句。例如,给定以下 SQL 查询语句:

SELECT * FROM EMPLOYEE_TABLE WHERE LASTNAME = 'DETTINGER’这是一个特定的 SQL 语句,它只返回一个值;即关于名为 Dettinger 的雇员的信息。

通过添加参数标记,可以使语句更为灵活:

SELECT * FROM EMPLOYEE_TABLE WHERE LASTNAME = ?通过简单地将参数标记设置为某个值,可以获取关于表中的任何雇员的信息。

由于前一个 Statement 示例可以只经过一次准备阶段并接着使用不同的参数值来重复地进行处理,所以 PreparedStatement 能够提供比 Statement 更高的性能。

注意

要支持本机 JDBC 驱动程序的语句合用,必须使用 PreparedStatement。

prepareStatement 方法用来创建新的 PreparedStatement 对象。与 createStatement 方法不同,创建 PreparedStatement 对象时必须提供 SQL 语句。在那个时候,对 SQL 语句进行预编译以供使用。例如,假定已存在名为 conn 的 Connection 对象,以下示例将创建 PreparedStatement 对象并准备要在数据库中处理的 SQL 语句。

PreparedStatement ps = conn.prepareStatement("SELECT * FROM EMPLOYEE_TABLE

WHERE LASTNAME = ?");与 createStatement 方法相同,重载 prepareStatement 方法的目的是提供对指定 ResultSet 特征的支持。prepareStatement 方法还具有变体,可使用自动生成的键。以下是有效 prepareStatement 方法调用的一些示例:

示例:prepareStatement 方法

注意:请阅读代码示例不保证声明以了解重要的法律信息。

   // New in JDBC 2.
PreparedStatement ps2 = conn.prepareStatement("SELECT * FROM

         EMPLOYEE_TABLE WHERE LASTNAME = ?",

     ResultSet.TYPE_SCROLL_INSENSITIVE,

     ResultSet.CONCUR_UPDATEABLE);

     // New in JDBC 3.0

     PreparedStatement ps3 = conn.prepareStatement("SELECT * FROM

         EMPLOYEE_TABLE WHERE LASTNAME = ?",

         ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATEABLE,

         ResultSet.HOLD_CURSOR_OVER_COMMIT);

   PreparedStatement ps4 = conn.prepa
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值