六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 202|回复: 0

DataExpress组件应用

[复制链接]

升级  44%

28

主题

28

主题

28

主题

秀才

Rank: 2

积分
116
 楼主| 发表于 2013-1-14 23:02:29 | 显示全部楼层 |阅读模式
脱机修改数据集
步骤
(1)、从foo数据表中检索得到一个结果集存放于queryDataSet中,然后关闭数据库,将queryDataSet中的数据复制到storageDataSet中
2、在storageDataSet数据集中插入两条id值为3和4的记录
3、在storageDataset中定位id值为1的记录,并将那么字段的值修改为bill
4、在storageDataSet数据集中删除id值为2的记录
5打印storageDataSet数据集中的临时数据,还为持久化到数据库
6、利用QueryResolver类的对象实例,实现数据持久化
import java.sql.DriverManager;import java.sql.Connection;import com.borland.dx.dataset.StorageDataSet;import com.borland.dx.dataset.DataRow;import com.borland.dx.dataset.Locate;import com.borland.dx.sql.dataset.Load;import com.borland.dx.sql.dataset.Database;import com.borland.dx.sql.dataset.QueryDescriptor;import com.borland.dx.sql.dataset.QueryDataSet;import com.borland.dx.sql.dataset.QueryResolver;public class OffLineModify{static String driverName="org.apache.derby.jdbc.ClientDriver";static String dbUrl="jdbc:derby://localhost:1527/NetworkDB;create=true";  public static void main(String[] args)  {    //检索数据库,得到结果集    Database database=new Database();    QueryDataSet queryDataSet=new QueryDataSet();    Connection conn=null;    try    {      Class.forName(driverName);      conn=DriverManager.getConnection(dbUrl);      database.setJdbcConnection(conn);      queryDataSet.setQuery(new QueryDescriptor(database,"select ID,NAME from FOO", null, true, Load.ALL));      queryDataSet.open();    }    catch(Exception e)    {      System.out.println("取得连接或者查询出错!");      e.printStackTrace(System.out);      return;    }    finally    {      if(conn!=null)        database.closeConnection();    }    StorageDataSet storageDataSet=queryDataSet;//从QueryDataSet中获得拷贝        //插入记录:    storageDataSet.goToRow(0);    storageDataSet.insertRow(false);    storageDataSet.setInt( "ID",3 );    storageDataSet.setString( "NAME","Mike" );    storageDataSet.insertRow(false);    storageDataSet.setInt( "ID",4 );    storageDataSet.setString( "NAME","John" );            //查找、修改记录    DataRow locateRow=new DataRow(storageDataSet,"ID");    locateRow.setInt( "ID",1 );    storageDataSet.first();    if( storageDataSet.locate(locateRow,Locate.FIRST) )      do      {        storageDataSet.editRow();        storageDataSet.setString( "NAME","Bill" );      }      while( storageDataSet.locate(locateRow,Locate.NEXT) );          //查找、删除记录    DataRow locateRow1=new DataRow(storageDataSet,"ID");    locateRow1.setInt( "ID",2 );    storageDataSet.first();    if( storageDataSet.locate(locateRow1,Locate.FIRST) )      do      {      storageDataSet.deleteRow();      storageDataSet.prior();//将指针向前移动一条记录,因为当前记录已被删除      }      while( storageDataSet.locate(locateRow1,Locate.NEXT) );          //临时结果集展示    System.out.println("共有记录:"+storageDataSet.rowCount());    for(int i=0;i<storageDataSet.rowCount();i++)    {      storageDataSet.goToRow(i);      System.out.println( storageDataSet.format("NAME") );    }        //将修改结果写回数据库    QueryResolver queryResolver=new QueryResolver();    Database database1=new Database();    queryResolver.setDatabase(database1);    Connection conn1=null;    storageDataSet.setResolver(queryResolver);    try    {      Class.forName(driverName);      conn1=DriverManager.getConnection(dbUrl);      database1.setJdbcConnection(conn1);      storageDataSet.saveChanges();    }    catch(Exception e)    {      System.out.println("取得连接或者写入数据库出错!");      e.printStackTrace(System.out);      return;    }    finally    {      storageDataSet.close();      if(conn1!=null)        database1.closeConnection();  }  }  }
附件为包和源程序
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表