JDK 1.5ѧϰ֮RowSet

80¿á¿áÍø    80kuku.com

ÔÚ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½Ó¿ÚÀïÃæµÄ·½·¨ºÜÁé»î£¬ËùÒÔÎÒÃǾÍÄܺÜÁé»îµØÉèÖùýÂËÌõ¼þ£¬ÎÒÃǾͿÉÒÔֻͨ¹ýÒ»ÌõÓï¾äµÃµ½²»Í¬µÄ½á¹û¡£

WebRowSet½Ó¿Ú£ºXMLÒòΪÆäƽ̨ÎÞ¹ØÐÔÔ½À´Ô½Êܵ½¿ª·¢ÕßµÄÇàíù£¬ËüÒ²ÊÇÊý¾Ý³Ö¾Ã»¯µÄÒ»¸ö²»´íµÄÑ¡Ôñ£¬WebRowSet·â×°Á˶ÁдXMLµÄ·½·¨£¬ÎÒÃǾͿÉÒÔÇáËɵذÑÊý¾Ý¿âµÄÊý¾Ý³Ö¾Ã»¯µ½XML»òÕß´ÓXML¶ÁÈ¡Êý¾ÝдÈëÊý¾Ý¿â¡£Ð´Èëµ½XMLÎļþµÄ·½·¨ÊÇwrs.writeXML(new FileOutputStream(“data.xml”));ËüÖ´ÐеĽá¹ûÊÇ°ÑÄÚ´æÖеÄÊý¾ÝдÈ뵱ǰĿ¼ÀïÃæµÄdata.xmlÎļþÖС£ÔÚÕâ¸öxmlÎļþÀïÃæ¼Ç¼ÁËÈýÀàÊý¾Ý:properties£º°üÀ¨setXXX()·½·¨ËùÓеÄÊôÐÔ£¬Ã»ÓÐÉèÖõľÍÊÇĬÈÏÊôÐÔmetadata£º°üÀ¨Êý¾Ý¿â±íµÄÏà¹ØÔªÊý¾Ý£¬¶ÔÓ¦ResultSetMetaDataÀïµÄÐÅÏ¢data£º½á¹û¼¯µÄÈ«²¿Êý¾Ý´ÓxmlÎļþ¶ÁÈ¡Êý¾Ý×°Ôص½RowSetµÄ·½·¨ÊÇreadXML(…);Ö»ÒªÊÇ°´Õչ淶µÄ¸ñʽдµÄxml¶¼¿ÉÒÔ×°ÔؽøÀ´¡£

½áÓÎå¸öRowSet½Ó¿ÚÀïÃæ·Ö±ð¶¼»¹ÓÐһЩ·½·¨£¬ÓÉÓÚƪ·ùÓÐÏÞ£¬ÎÒÖ»ÁгöÁËÆäÖÐһЩµäÐ͵ķ½·¨£¬Ï£Íû±¾ÎĶԴó¼Ò½øÒ»²½Ñ§Ï°jdk1.5ÓÐËù°ïÖú£¡



·ÖÏíµ½
  • ΢ÐÅ·ÖÏí
  • ÐÂÀË΢²©
  • QQºÃÓÑ
  • QQ¿Õ¼ä
µã»÷£º