动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息



本月文章推荐
.JBuilder 2005单元测试之慨述.
.生成jar文件的方法.
.Java Web层的下一个王者是谁?.
.Java及相关字符集编码问题研究.
.深入浅出Java clone技术(3).
.Java核心代码例程之:StringBuff.
.Resin服务器平台介绍.
.怎 样 在APPLET 中 发EMAIL.
.VBArray 对象.
.Java数据访问对象(DAO)编程模入门.
.使用JavaServer Pages技术生成动.
.Java的测试规范.
.使用的DES对称加密.
.Java实用工具.
.BuildPath 方法.
.Java源代码案例--骑士巡游问题.
.简单介绍javabean 和 ejb 的区别.
.JDBMonitor在多数据源中的问题.
.使用UML编写Java应用程序 (2)设计.
.Java中设计模式(2) Singleton模式.

分布式数据库客户端数据集的选用

发表日期:2008-1-5 |



  有两种方法:
  1、用vector:
  > public Enumeration ejbFindBigAccounts(double balanceGreaterThan) {
  > log("ejbFindBigAccounts (balance > " + balanceGreaterThan + ")");
  > Connection con = null;
  > PreparedStatement ps = null;
  >
  > try {
  > con = getConnection();
  > ps = con.prepareStatement("select id from ejbAccounts where bal > ?");
  > ps.setDouble(1, balanceGreaterThan);
  > ps.executeQuery();
  > ResultSet rs = ps.getResultSet();
  > Vector v = new Vector();
  > String pk;
  > while (rs.next()) {
  > pk = rs.getString(1);
  > v.addElement(pk);
  > }
  > return v.elements();
  > } catch (SQLException sqe) {
  > log("SQLException: " + sqe);
  > throw new EJBException (sqe);
  > } finally {
  > cleanup(con, ps);
  > }
  > }
  
  2、RowSet
  RowSet tutorial chapter :
  http://developer.Java.sun.com/developer/Books/JDBCTutorial/chapter5.Html
  
  rowset是个interface,需要有东西去实现它,sun的规范中给了三个class:cachedrowset,jdbcrowset,webrowset,假如去查jdk1.4 doc和j2skee1.2,有rowset,却没有那三个class,一般的开发工具(至少我的wsad)中也是这样,所以需要下jdbc2.0 opt-pack:
  http://developer.java.sun.com/developer/earlyAccess/crs/
  
  1、解包,得到rowset.jar,放在哪随您的意,别丢了就行。
  2、在您的开发工具中增加一个路径,如:ROWSET_PATH对应:d:\jdk1.4\jre\rowset.jar(和1的路径对应就行)。
  3、右键您的工程文件,出现:property(大多数工具应该都有吧),加上rowset_path。
  4、在您的源文件中:import sun.jdbc.rowset.*;
  
  应该说rowset(其实主要是CachedRowSet)真的是个好东西,和ms ado的resultset和borland的tclientset非常相似,最大的好处是Cache功能!
  
  package example4;
  
  import java.sql.*;
  import javax.sql.*;
  import sun.jdbc.rowset.*;
  import javax.naming.*;
  import javax.ejb.*;
  
  public class CoffeesBean implements SessionBean {
  
  private SessionContext sc = null;
  private Context ctx = null;
  private DataSource ds = null;
  
  public CoffeesBean () {}
  
  public void ejbCreate() throws CreateException {
  
  try {
  ctx = new InitialContext();
  ds = (DataSource)ctx.lookup("jdbc/CoffeesDB");
  }
  catch (Exception e) {
  System.out.println(e.getMessage());
  throw new CreateException();
  }
  }
  
  public RowSet getCoffees() throws SQLException {
  
  Connection con = null;
  ResultSet rs;
  CachedRowSet crs;
  
  try {
  con = ds.getConnection("webCustomer", "webPassWord");
  Statement stmt = con.createStatement();
  rs = stmt.executeQuery("select * from coffees");
  
  crs = new CachedRowSet();
  crs.populate(rs);
  // the writer needs this because JDBC drivers
  // don't provide this meta-data.
  crs.setTableName("coffees");
  
  rs.close();
  stmt.close();
  } finally {
  if (con != null)
  con.close();
  }
  return rset;
  }
  
  public updateCoffees(RowSet rs) throws SQLException {
  
  Connection con = null;
  
  try {
  CachedRowSet crs = (CachedRowSet)rs;
  con = ds.getConnection("webCustomer", "webPassword");
  
  moves the changes back to the database
  crs.acceptChanges(con);
  } finally {
  if (con != null)
  con.close();
  }
  }
  
  //
  // Methods inherited from SessionBean
  //
  
  public void setSessionContext(SessionContext sc) {
  this.sc = sc;
  }
  
  public void ejbRemove() {}
  public void ejbPassivate() {}
  public void ejbActivate() {}
  
  
  }
  
  
  //////////////////client端//////////////
  package example4;
  
  import java.sql.*;
  import javax.sql.*;
  import sun.jdbc.rowset.*;
  import javax.naming.*;
  import javax.ejb.*;
  import javax.rmi.*;
  
  class CoffeesClient {
  
  public static void main(String[] args) {
  
  try {
  // init the bean
  Context ctx = new InitialContext();
  Object obj = ctx.lookup("ejb/Coffees");
  CoffeesHome coffeesHome = (CoffeesHome)
  PortableRemoteObject.narrow(obj, CoffeesHome.class);
  Coffees coffees = coffeesHome.create();
  
  // get the rowset from the bean
  CachedRowSet rset = (CachedRowSet)coffees.getCoffees();
  
  // find the Columbian coffee
  while (rset.next()) {
  String coffeeName = rset.getString("COF_NAME");
  if (coffeeName.equalsIgnoreCase(new String("Columbian"))) {
  // columbian coffee has gone up 10%
  rset.updateFloat("PRICE",
  (float)(rset.getFloat("PRICE") * 1.10));
  rset.updateRow();
  }
  }
  
  // finally send the updated back to the bean...
  System.out.println("Calling update method");
  coffees.updateCoffees((RowSet)rset);
  }
  catch (Exception e) {
  System.out.println(e.getMessage());
  }
  }
  }

上一篇:如何封锁您的(或打开别人的)Java 代码 人气:311
下一篇:关于在bean里面打印html的利弊看法 人气:304
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-6 飞天论坛FTBBS ASP v6.3 Build 0
2008-7-6 飞天论坛FTBBS ASP v6.3 Build 0
2008-7-6 飞天论坛FTBBS ASP v6.8 Build 0
2008-7-6 讯息内容管理系统 v2.1
2008-7-6 三五电影程序 v2.0
2008-7-6 神鹰腾讯小说小偷 v3.0
2008-7-6 EasyIDE Framework v1.0 Build 2
2008-7-6 品告CMS系统(电影版) v0.9
2008-7-6 QQ自动登录器 C# 源码 v1.0
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 GoodCalculator2.0版固件计算器
2008-7-5 RepoName源地址搜索工具 v1.21b
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 TouchCopy多媒体管理软件 v3.13完
2008-7-5 VideosTone视频铃声 v1.1汉化破解
2008-7-5 TouchPad触摸板 v4.44破解版
2008-7-5 VideosTone破解补丁 v1.0
2008-7-5 Feeds GoogleReader客户端 v0.4.3


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報