ÖйúIT¶¯Á¦,×îÐÂ×îÈ«µÄIT¼¼Êõ½Ì³Ì
×îÐÂ100ƪ | ÍÆ¼ö100ƪ | רÌâ100ƪ | ÅÅÐаñ | ËÑË÷ | ÔÚÏßAPIÎĵµ
Ê× Ò³ | ³ÌÐò¿ª·¢ | ²Ù×÷ϵͳ | Èí¼þÓ¦Óà| Í¼ÐÎͼÏó | ÍøÂçÓ¦Óà| ¾«ÎÄÜöÝÍ | ½ÌÓýÈÏÖ¤ | Ó²¼þά»¤ | Î´ÕûÀíÆª | Õ¾³¤½Ì³Ì
ASP JS PHP¹¤³Ì ASP.NET ÍøÕ¾½¨Éè UML J2EESUN .NET VC VB VFP ÍøÂçά»¤ Êý¾Ý¿â DB2 SQL2000 Oracle Mysql
·þÎñÆ÷ Win2000 Office C DreamWeaver FireWorks Flash PhotoShop ÉÏÍø±¦µä CorelDraw ЭÒé´óÈ« ÍøÂ簲ȫ ΢ÈíÈÏÖ¤
Ó²¼þά»¤  CPU  Ö÷°å  Ó²ÅÌ  ÄÚ´æ  ÏÔ¿¨  ÏÔʾÆ÷  ¼üÅÌÊó±ê  Éù¿¨ÒôÏä  ´òÓ¡»ú  »úÏäµçÔ´  BIOS  Íø¿¨  C#  Java  Delphi  vs.net2005
  µ±Ç°Î»Öãº> ³ÌÐò¿ª·¢ > ±à³ÌÓïÑÔ > Java > J2SE
JDK 1.5ѧϰ֮RowSet
×÷Õß:δ֪ ʱ¼ä:2005-07-24 21:14 ³ö´¦:JR Ôð±à:chinaitpower
              ÕªÒª£ºJDK 1.5ѧϰ֮RowSet
ÔÚjdk1.4µÄjavax.sql°üÖÐÓÐÒ»¸öRowSet½Ó¿Ú£¬µ«ÊÇûÓоßÌåʵÏÖµÄÀà¡£¡±Tiger¡±µ®ÉúÖ®ºó£¬ÒýÈëÁË javax.sql.rowset°üÖеÄÎå¸ö×Ó½Ó¿ÚºÍcom.sun.rowset°üÀïÃæµÄ¶ÔÓ¦µÄÎå¸öʵÏÖÀ࣬ÕâÑùÎÒÃǾͿÉÊÇʹÓù¦ÄÜÇ¿´óµÄRowSet ÁË¡£jdk1.5ÖÐRowSetµÄÎå¸ö×Ó½Ó¿Ú·Ö±ðÊÇJdbcRowSet,CachedRowSet,WebRowSet,JoinRowSetºÍ FilteredRowSet£¬ËûÃÇΪÎÒÃǵÄÊý¾Ý¿â¿ª·¢´øÀ´ÁËÇ¿´óµÄ¹¦Äܺͷ½±ãµÄ²Ù×÷¡£
ÎÒµÄjava»·¾³ÊÇ:RedHat 9
Jdk 1.5.1_01
Eclipse 3.1m4
MySql 4.1.10 (JDBC Driver:org.gjt.mm.mysql.Driver)
ÎÒÊ×ÏÈÔÚtestÊý¾Ý¿âÀïÃæ´´½¨ÁËÁ½¸ö±íÓÃÓÚÕâ´ÎµÄѧϰ£¬ÏÂÃæÊǽű¾£º
create table table1 (id int not null , name varchar(20) not null);
create table table2 (id int not null, info varchar(20) not null);
È»ºóÎҾͲåÈëÁËһЩÊý¾ÝÓÃÓÚ²âÊÔ¡£ÒÔÏÂÄÚÈÝÒÔÎҵĻ·¾³Ê¾Ò⣬´ó¼ÒÖ»ÒªÐÞ¸ÄÏàÓ¦µØ·½¾Í¿ÉÓÃÓÚ×Ô¼ºµÄ²âÊÔ¡£
RowSet ¶ÔÏó¿É·ÖΪÁ½ÀࣺÓÐÁ¬½ÓµÄºÍÎÞÁ¬½ÓµÄ¡£JdbcRowSetÊÇΨһһ¸öÓÐÁ¬½ÓµÄʵÏÖ£¬ºÍ´«Í³µÄResultSetÒ»¸öÑù£¬ÓÐÁ¬½ÓµÄʵÏÖÊÇ»ùÓÚJdbcÇý¶¯µÄÁ¬½Ó£¬Êý¾Ý¿âµÄÁ¬½ÓÊǹᴩÕû¸ö¶ÔÊý¾Ý¿âµÄ²Ù×÷¡£¶øÎÞÁ¬½ÓµÄʵÏÖÊÇ»ùÓÚReaderºÍWriterÁ÷µÄÁ¬½Ó£¬ÔÚÐèÒª¶ÁÈ¡Êý¾ÝºÍдÈëÊý¾ÝµÄʱºò²Å½¨Á¢Á¬½Ó£¬ÔÚÕû¸ö²Ù×÷¹ý³ÌÖж¼ÊǶϿªÁ¬½ÓµÄ£¬ºóÃæËĸö½Ó¿Ú¶ÔÏó¶¼ÊÇÎÞÁ¬½ÓµÄʵÏÖ¡£ÏÂÃæÎÒ¾ÍÕë¶Ôÿһ¸ö½Ó¿ÚÀ´½éÉÜÒ»ÏÂËüÃǸ÷×ԵŦÄÜ¡£
JdbcRowSet½Ó¿Ú£º
ÎÒµÄÀí½âÊÇÕâ¸ö½Ó¿Ú»ù±¾ÉϺÍResultSetÓÐÀàËÆµÄ¹¦ÄÜ£¬Ö»²»¹ýËüµÄ½á¹û¼¯Ä¬ÈÏÊÇResultSet.TYPE_SCROLL_INSENSITIVEºÍResultSet.CONCUR_UPDATABLEµÄ£¬Ò²¾ÍÊÇ˵ĬÈϵĽá¹û¼¯¾ÍÊÇ¿ÉÒÔÉÏϹö¶¯ºÍ¿É¸üеġ£
ÒòΪ±¾ÉíRowSet½Ó¿Ú¾ÍÊÇResultSetµÄ×Ó½Ó¿Ú£¬ËùÒÔ1.5ÀïÃæµÄËùÓÐRowSet¶¼ÓÐResultSetµÄ·½·¨£¬¶øJdbcRowSetÓÖÖ»ÊÇÔÚĬÈϵÄÊôÐÔºÍResultSetÓÐÇø±ð£¬ËùÒÔËü¶Ô½á¹û¼¯µÄ²Ù×÷·½·¨ºÍResultSet¶¼ÊÇÒ»ÑùµÄ£¬ÎҾͲ»¾ßÌå½éÉÜÁË£¬´ó¼Ò¿ÉÒԲο¼API¡£
ÏÂÃæÎÒ½éÉÜÒ»ÏÂJdbcRowSetµÄ´´½¨·½·¨£¬ÕâÓÐÁ½ÖÖ·½·¨£¬Ò»ÖÖÊÇ»ùÓÚ´«Í³µÄJDBCÁ¬½ÓÊý¾Ý¿âµÄ·½·¨£º
Class.forName(¡°org.gjt.mm.mysql.Driver¡±);
Connection conn=DriverManager.getConnection(¡°jdbc:mydql://localhost:3306/test¡±,¡±root¡¯,¡±¡±);
Statement stmt=conn.createStatement();
ResultSet rs=stamt.executeQuery(¡°select * from table1¡±);
JdbcRowSet jrs=new JdbcRowSetImpl(rs);
ÕâÑù¾Í´´½¨ÁËÒ»¸ö¶ÔÏó£¨JdbcRowSetImplÊÇcom.sun.rowset°üÀïÃæµÄʵÏÖÀ࣬ÎÄÖеÄÎå¸ö½Ó¿ÚÔÚ°üÖж¼¶ÔÓ¦ÓÐÒ»¸öʵÏÖÀࣩ£¬Õâ¸ö¶ÔÏóÀïÃæµÄÊý¾Ý¾ÍÊǺÍrsÀïÃæµÄÊý¾ÝÊÇÒ»ÑùµÄ¡£»¹ÓÐÒ»ÖÖ´´½¨µÄ·½·¨ÊÇʹÓÃĬÈϵĹ¹Ôì·½·¨£¬È»ºósetÊôÐԵõ½Êý¾Ý£¬¸öÈËÍÆ¼öʹÓõڶþÖÖ·½·¨£º
JdbcRowSet jrs=new JdbcRowSetImpl();
jrs.setUrl(¡°jdbc:mydql://localhost:3306/test¡±);
jrs.setUsername(¡°root¡±);
jrs.setPassword(¡°¡±);
jrs.setCommand(¡°select * from table1¡±);
jrs.execute();
ÕâÑù´´½¨µÄ¶ÔÏóÊǺ͵ÚÒ»ÖÖ·½·¨ÊÇÒ»ÑùµÄ½á¹û¡£µ±È»ÕâÖÖ·½·¨¿ÉÒÔÁ¬½ÓÒ»¸öÊý¾ÝÔ´£¬Èç¹ûÎÒÃÇÔÚÉÏÏÂÎÄ»·¾³ÖÖ°ó¶¨ÁËÒ»¸öÊý¾ÝÔ´£¬JNDIÃû×ÖÊÇdataSource1£¬ÄÇôÏÂÃæµÄ´úÂë¾Í¿ÉÒÔ»ñµÃ¶ÔÏó£º
JdbcRowSet jrs=new JdbcRowSetImpl();
jrs.setDataSourceName(¡°dataSource1¡±)
jrs.execute();
µÃµ½¶ÔÏóÖ®ºóÎÒÃǾͿÉÒÔʹÓÃÏàÓ¦µÄ·½·¨À´¶ÔÊý¾Ý½øÐбéÀú£¬¸üУ¬²åÈë»òÕßɾ³ý¡£
ÎÒÓÐ2µãҪ˵Ã÷£ºµÚÒ»£¬ÆäËüËĸö½Ó¿ÚµÄ¶ÔÏóÖгýÁËJoinRowSet´´½¨·½Ê½»ù±¾¶¼ÊÇÒ»ÑùµÄ£¬Ö»ÊǽӿÚÃû×ֺͽӿÚʵÏÖÀàµÄÃû×Ö²»Í¬¶øÒÑ£¬ºóÃæÎҾͲ»ÔÙ˵Ã÷´´½¨¶ÔÏóµÄ·½·¨ÁË¡£µÚ¶þ£¬ËäÈ»JdbcRowSetĬÈÏÊǿɹö¶¯ºÍ¿É¸üÐµģ¬µ«ÊÇÕâÒ²ÊÇÐèÒªÊý¾Ý¿âÇý¶¯Ö§³ÖµÄ£¬ÎÒʹÓõÄMySqlÇý¶¯¾Í²»Ö§³Ö¸üнá¹û¼¯£¬ËùÒÔ´ó¼ÒʹÓÃ֮ǰÐèÒªÔĶÁÇý¶¯µÄ˵Ã÷Îĵµ¡£
CachedRowSet½Ó¿Ú£º
Ëü¼Ì³ÐÓÚRowSet½Ó¿Ú£¬¶øÇÒËûÊÇÎÞÁ¬½ÓµÄRowSetµÄÆäËû3¸öʵÏֵĸ¸½Ó¿Ú£¬Ò²¾ÍÊÇ˵ÆäËû3¸ö½Ó¿Ú¶¼Ö±½Ó»òÕß¼ä½Ó¼Ì³ÐÁËËü¡£´ÓÃû×ÖÎÒÃÇ¿ÉÒÔÖªµÀ£¬ËüµÄÔ­Àí¾ÍÊǶÁÈëÊý¾Ý±£´æÔÚ»º´æ½øÐÐÏàÓ¦µÄ²Ù×÷¡£
´´½¨½Ó¿Ú¶ÔÏó³ýÁËÉÏÃæµÄÁ½ÖÖ´´½¨·½Ê½£¬»¹ÓÐÒ»¸ö·½·¨£¬¾ÍÊÇÔÚ¹¹Ôì·½·¨ÀïÃæ´«µÝÒ»¸öSyncProvider¡£Ö®Ç°ÎÒ˵¹ýÎÞÁ¬½ÓµÄRowSet¶¼ÊÇ»ùÓÚÁ÷¶ÁдµÄ£¬ÄÇôÕâÀïËù˵µÄSyncProvider¾ÍÊÇÌṩÁËÌØ¶¨µÄReaderºÍWriter¡£jdk1.5ÎĵµµÄSample CoderÓÐÕâÑùµÄʵÏÖ£º
String provider= ¡°com.fred.providers.HighAvailabilityProvider¡±
CachedRowSet crs=new CachedRowSetImpl(provider);
ÕâÑùÎÒÃǾÍΪRowSetÉèÖÃÁËÌØ¶¨µÄReaderºÍWriter£¬µ«ÊÇÕâÊÇÐèÒªµÚÈý·½µÄ°üÖ§³ÖµÄ¡£¶øÎÒÃÇʹÓÃÎ޲εĹ¹Ôì·½·¨´´½¨µÄ¶ÔÏóÊÇʹÓÃÁËĬÈϵĠSyncProvider£¬µ±È»Ò»°ãÀ´ËµÕâ¶ÔÓÚÎÒÃǾÍÒѾ­×ã¹»ÁË¡£´´½¨Á˶ÔÏóÖ®ºó¾Í¿ÉÒÔʹÓúÍJdbcRowSetÒ»ÑùµÄ·½·¨À´½øÐоͽá¹û¼¯µÄÔöɾ¸Ä²Ù×÷ÁË£¬µ«ÊÇΨһ²»Í¬µÄ¾ÍÊÇÔÚ¸üÐÂÁ˽á¹û¼¯Ö®ºó±ØÐëµ÷ÓÃWriter½«»º´æÖеÄÊý¾ÝдÈëÊý¾Ý¿â£¬¶øÆä·½·¨¾ÍÊÇcrs.acceptChages();
CachedRowSetÌṩµÄ×îÁîÈËÐ˷ܵŦÄܾÍÊÇ·ÖÒ³¹¦ÄÜ¡£ÒÔǰ³ÌÐòÔ±ºÜÍ·ÌÛµÄÎÊÌâ¾ÍÊÇÔõô´¦ÀíÊý¾Ý·ÖÒ³¶ø²»Ó°ÏìÐÔÄÜ£¬ÏÖÔÚÓÐÁËCachedRowSetÒ»Çж¼±äµÃÄÇô¼òµ¥£¬Çë¿´ÏÂÃæµÄ´úÂ룺
CachedRowSet crs=new CaehedRowSetImpl();
crs.setUrl(¡°jdbc:mydql://localhost:3306/test¡±);
crs.setUsername(¡°root¡±);
crs.setPassword(¡°¡±);
crs.setCommand(¡°select * from table1¡±);
crs.setPageSize(5);
crs.execute();
while(crs.nextPage())
while(crs.next())
System.out.println(crs.getInt(¡°id¡±+¡±\t\t¡±+crs.getString(¡°name¡±));
ÎÒÃÇÔÚcrs.execute()֮ǰÉèÖÃÿҳµÄÊý¾ÝÐÐÊý£¬ÄÇôReader¶ÁÈ¡Êý¾ÝµÄʱºò¾ÍÖ»¶ÁÖ¸¶¨µÄÐÐÊýµÄÊý¾Ý£¬ÕâÑùÎÒÃǾͱÜÃâÁËÒ»´Î¶ÁÈ¡ËùÓÐÊý¾ÝÔÙ½øÐзÖÒ³²Ù×÷¡£ÊDz»ÊǺܼòµ¥ÄØ£¿

JoinRowSet½Ó¿Ú£º
Õâ¸ö½Ó¿Ú¿ÉÒÔÌṩÎÒÃÇÔÚÎÞÁ¬½ÓµÄ״̬ÏÂÖ±½Ó¶Ô½á¹û¼¯½øÐÐJoin¡£ÏÂÃæµÄ´úÂëÌṩÁËJoinRowSetµÄʵÏÖ£º
CachedRowSet crs1=new CaehedRowSetImpl();
crs1.setUrl(¡°jdbc:mydql://localhost:3306/test¡±);
crs1.setUsername(¡°root¡±);
crs1.setPassword(¡°¡±);
crs1.setCommand(¡°select * from table1¡±);
crs1.execute();
CachedRowSet crs2=new CaehedRowSetImpl();
crs2.setUrl(¡°jdbc:mydql://localhost:3306/test¡±);
crs2.setUsername(¡°root¡±);
crs2.setPassword(¡°¡±);
crs2.setCommand(¡°select * from table2¡±);
crs2.execute();
JoinRowSet jrs=new JoinRowSetImpl();
jrs.addRowSet(crs1,¡±id¡±);
jrs.addRowSet(crs2,¡±id¡±);
while(jrs.next())
System.out.println(jrs.getInt(¡°id¡±)+¡±\t\t¡±+jrs.getString(¡°name¡±)+¡±\t\t¡±+jrs.getString(¡°info¡±);
Õâ¶Î´úÂëµÄ×÷ÓúÍÖ´ÐÐselect * from table1 inner join table2 on table1.id=table2.idÓï¾äµÃµ½µÄ½á¹û¼¯ÊÇÒ»ÑùµÄ¡£µ«ÊÇÎÒ¸öÈËÈÏΪÓëÆäÕâÑù¸´ÔÓµØÊ¹ÓÃJoinRowSet£¬²»ÈçÖ±½ÓʹÓÃÕâÌõJoinÓï¾äÀ´µÃµ½CachedRowSet¡£
ĬÈϵÄJoinÊÇinner joinµÄ£¬½Ó¿Ú»¹Ö§³Öcross join,full join,left outer joinºÍright outer join£¬ÎÒÃÇͨ¹ýsetJoinType()·½·¨À´ÐÞ¸ÄÁ¬½ÓÀàÐÍ£¬µ±È»Õ⻹ÊÇÐèÒªÊý¾Ý¿âµÄÖ§³Ö¡£»¹ÓÐÒ»¸öÖµµÃ×¢ÒâµÄµØ·½¾ÍÊÇ£¬ÔÚÕâ¸öÀý×ÓÀïÎÒÁ¬½ÓµÄÁÐÔÚÁ½¸ö±íÀïÃæ¶¼½Ðid£¬ÄÇôÎÒÃÇÈ¡Êý¾ÝµÄʱºò¾ÍʹÓÃidÕâ¸öÃû×Ö£¬ÄÇÈç¹ûÁ½ÁеÄÃû×Ö²»Ò»ÑùÄØ£¿ÏµÍ³¾Í»áΪÕâ¸öÁ¬½ÓÁÐȡһ¸öĬÈϵÄÃû×Ö½Ð×ö¡± MergedCol¡±¡£
FilteredRowSet½Ó¿Ú£º
.NETµÄADO.NETÖ§³Ö»ñÈ¡½á¹û¼¯Ê¹ÓÃÒ»¶¨µÄÌõ¼þ¹ýÂË´Ó¶øµÃµ½²»Í¬µÄ½á¹û£¬ÄÇÏÖÔÚjdk1.5Ò²ÄÜ×öµ½ÁË£¬FilterRowSet½Ó¿ÚÈÃÎÒÃÇ¿ÉÒÔÁé»îµØ¶¨Òå¹ýÂËÌõ¼þ´ïµ½²»Í¬µÄЧ¹û¡£Javax.sql.rowset°üÀïÃæµÄPredicate½Ó¿Ú¾ÍÊÇÕâ¸ö¹ýÂËÆ÷£¬ÎÒÃÇͨ¹ýʵÏÖÕâ¸ö½Ó¿Ú¶¨Òå¹ýÂËÌõ¼þ£¬ÏÂÃæÊÇʾÒâ´úÂ룺
public class Filter implements Predicate {
private int min;
private int max;
private String colName;
public Filter (int min ,int max ,String colName) {
this.min=min; this.max=max; this.colName=colName;
}
public boolean evaluate (RowSet rs) {
CachedRowSet crs=(CachedRowSet)rs;
if((crs.getInt(colName)>min)&& (crs.getInt(colName)<max))
return true;
else return false;
}
}
ÏÂÃæÎÒÃǾÍʹÓÃÕâ¸ö¹ýÂËÆ÷À´¹ýÂ˵ôid²»ÔÚminºÍmaxÖ®¼äµÄÊý¾Ý£º
FilteredRowSet frs=new FilteredRowSet();
¡­¡­
frs.setCommand(¡°select * from table1¡±);
frs.execute();//ÏÈ»ñÈ¡ËùÓÐÊý¾Ý£»
frs.setFilter(new Filter(1,20,¡±id¡±);//¹ýÂ˵ôidÖµ²»ÔÚ1ºÍ20Ö®¼äµÄÊý¾Ý£»
ÒòΪʵÏÖPrdicate½Ó¿ÚÀïÃæµÄ·½·¨ºÜÁé»î£¬ËùÒÔÎÒÃǾÍÄܺÜÁé»îµØÉèÖùýÂËÌõ¼þ£¬ÎÒÃǾͿÉÒÔֻͨ¹ýÒ»ÌõÓï¾äµÃµ½²»Í¬µÄ½á¹û¡£
¹Ø±Õ±¾Ò³
 
Ê×Ò³ | Ͷ×ÊÓëºÏ×÷ | ·þÎñÌõ¿î | Òþ˽Õþ²ß | Êղر¾Õ¾ | ÉèΪÊ×Ò³ | ÐÂÓû§×¢²á | ÃâÔðÉùÃ÷ | ʹÓðïÖú
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com °æÈ¨ËùÓÐ