设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> 数据库开发 >> 快速应用JDBC控件访问数据库资源
精品推荐
数据库开发点击TOP10
·MYSQL 新版出现 Client does not support authentication protocol requested by server; consider upgrading MySQL client解决办法
·生成助记码(取汉字的第一个字母)
·ORA-01034错误的解决办法
·ORACLE数据库管理员的职责
·将DW数据窗口导出为EXCEL文件的方法(整理)
·Oracle中分区表的使用
·SQL Server 2000+ MS WIN2003群集服务配置
·SQL中UNION 与 UNION ALL 的区别
·ORA-00257: archiver error. Connect internal only, until freed.
·Oracle备份与恢复案例
编程开发点击TOP10
·数字小键盘指法练习
·ASP.NET 程序中常用的三十三种代码
·用C语言编通讯录程序(初学者级别的)
·我写的Java学生成绩管理系统源代码
·CHK文件恢复工具
·java笔试题
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·Modem 常用AT指令集
·异常java.sql.SQLException: Io exception:The Network Adapter could not establish connection
·C++经典电子书下载
精选专题

快速应用JDBC控件访问数据库资源

作者: 来源:http://www.xgdown.com/ 时间:2006-12-7 11:13:35

快速应用JDBC控件访问数据库资源(4)   修改Tomct配置文件,创建DataSource资源

  ·如何创建Tomcat环境下的DataSource资源请参考Tomcat的帮助文档。

  修改Web应用的配置文件web.XML,增加如下内容,增加对资源的引用

Datasource example
jndi/samplesDataSource
javax.sql.DataSource
Container
  
  ·创建访问Tomcat服务器Jndi上下文的类JndiContextFactory

  JndiContextFactory类继承自JdbcControl.JndiContextFactory父类,覆盖父类中的抽象方法----getContext(),清单3 中显示了JndiContextFactory类定义和实现的完整代码。

  清单3 src\ org\vivianj\beehive\controls\examples\controls\

jndicontext\JndiContextFactory.java

1. package org.vivianj.beehive.controls.examples.controls.jndicontext;
2.
3. import java.util.Hashtable;
4.
5. import javax.naming.Context;
6. import javax.naming.InitialContext;
7.
8. import org.apache.beehive.controls.system.jdbc.JdbcControl;
9.
10. /**
11. * JndiContextFactory 用于从Tomcat服务器中获取访问JNDI内容的上下文环境
12. */
13. public class JndiContextFactory extends JdbcControl.JndiContextFactory {
14. /**
15. * 获得本地Tomcat服务器中访问JNDI内容的上下文环境
16. *
17. */
18. public Context getContext() {
19.
20. Context ctx = null;
21.
22. try {
23. ctx = (Context)(new InitialContext().lookup("java:/comp/env"));
24. } catch (Exception e) {
25.
26. }
27.
28. return ctx;
29. }
30. }

  我们可以使用ConnectionDataSource注释和新创建的JndiContextFactory类来注释JDBC控件了。

  下面的代码片断就是一个简单的例子,使用这段代码注释的JDBC控件,调用任何业务方法时,将通过本地Tomcat服务器上、JNDI名为“jndi/ samplesDataSource”的DataSource资源获取数据库连接。

@JdbcControl.ConnectionDataSource(
  jndiName = "jndi/samplesDataSource",
  jndiContextFactory=JndiContextFactory.class)

  ConnectionOptions注释

  ConnectionOptions可以用于定义访问数据库时的一些扩展特性,可以选择性的和ConnectionDataSource或者ConnectionDriver一起使用。ConnectionOptions支持三个参数:readOnly、resultSetHoldability、typeMappers。

  ·readOnly

  boolean类型,如果设置为true,数据库连接将优化为ReadOnly的访问方式,但是仍然可以进行更新和删除操作。默认为false。

  ·resultSetHoldability

  org.apache.beehive.controls.system.jdbc.JdbcControl.HoldabilityType类型,可以选择为HOLD_CURSORS_OVER_COMMIT或者CLOSE_CURSORS_AT_COMMIT,用于设置ResultSet指针的关闭策略,默认值是CLOSE_CURSORS_AT_COMMIT,表示在每次commit之后关闭ResulSet对象指针。

  ·typeMappers

  org.apache.beehive.controls.system.jdbc.JdbcControl.TypeMapper数组类型。设置SQL自定义类型和Java类型之间的映射。TypeMappers类中指定的Java类型必须实现java.sql.SQLData接口

  SQL注释

  SQL注释用于描述JDBC控件继承类中定义的方法,主要设置被注释方法调用时需要执行的SQL语句和其它功能。我们可以回头看一看清单2,里面的每一个业务方法之前均有@SQL注释。

  SQL注释支持很多属性设置,包括statement、arrayMaxLength等,其中最重要的就是statemet,本节中我们讨论statement属性的设置,其他属性的设置方法请大家参考Beehive的帮助文档,在大多数的情况下最好不要设置这些属性,因为里面可能用到JDBC3.0规范中的新特性,而现在很多数据库驱动并不支持这些特性。

  statement内容描述了我们需要完成的业务逻辑,在statement中我们可以使用变量的方式访问被注释方法中传递进来的参数,JDBC控件的解析器在运行时保证这些参数的正确传递。

  statement编写规则

  SQL注释的statement属性提供了被注释方法调用时执行的SQL语句的内容,SQL语言中可以使用JdbcControl提供的特殊语法直接访问Java对象或者它的属性。编写statement必须满足以下条件。

  ·statement中的sql语句编写方式和要求参考目标数据库的sql语句编写方式和要求。

  ·statement中使用{…}声明变量来获取业务方法调用时所传递参数或者它的属性。

  ·statement中变量声明的第一个字符和最后一个字符不能是空格,也就是说不能出现{ a}或者{a }这样的情况,否则可能执行结果和您期望的会有很大的出入

  ·{}中间的内容是大小写敏感的。如果传入的参数名为a,而{}中引用为A,他们之间将无法匹配。

  ·{}中间的内容可以是参数名(传入的参数是Java基本数据类型时适用),或者是参数对象的某个成员变量(传入的参数是Java类对象时)。

  ·{}中引用Java对象的字段时,必须保证该字段符合以下条件之一,否则Java控件调用时将会返回一个违例:

   * 该字段被public关键字声明为公共字段,可以使用 对象名.字段名 直接访问

   * 该字段被private关键字声明为私有字段,但是提供了公共的getter方法,可以通过 对象名.get属性名 方式访问。

   * 该Java对象继承了java.util.Map接口,可以通过 对象名.get(“属性名”)方式访问

  statement中引用业务方法中传递的参数时必须保证这些参数和对应的数据表的字段类型保持一致,不能出现数据表的字段是NUMBER类型,而对应的参数却是String类型。

  当业务方法传递的日期或者时间类型的参数需要在statement中被引用时,请保证这些传递的日期和时间使用的是java.sql包中的对应类,比如我们应该使用java.sql.Date而不要使用java.util.Date来传递日期类型的变量给statement

  statement中不能出现单引号。如果确实需要使用单引号,必须采用特别的方法解决。

  statement创建实例

  ·不从业务方法获取参数

  下面的业务方法声明可以从demo表中取出所有所有记录,返回一个Demo对象的数组。

@SQL(statement=“select * from demo” )

共7页 9 7 [1] [2] [3] [4] [5] [6] [78 :>

快速应用JDBC控件访问数据库资源 相关文章:
快速应用JDBC控件访问数据库资源 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com