亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? usingrowset.java

?? 利用java進(jìn)行數(shù)據(jù)庫(kù)操作的類(lèi)學(xué)習(xí)代碼
?? JAVA
字號(hào):
package book.database;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.SQLException;

import javax.sql.RowSet;
import javax.sql.rowset.CachedRowSet;
import javax.sql.rowset.FilteredRowSet;
import javax.sql.rowset.JdbcRowSet;
import javax.sql.rowset.JoinRowSet;
import javax.sql.rowset.Predicate;
import javax.sql.rowset.WebRowSet;

import com.sun.rowset.CachedRowSetImpl;
import com.sun.rowset.FilteredRowSetImpl;
import com.sun.rowset.JdbcRowSetImpl;
import com.sun.rowset.JoinRowSetImpl;
import com.sun.rowset.WebRowSetImpl;

/**
 * 本例演示如何使用RowSet接口。RowSet繼承ResultSet,比ResultSet更好用,
 * 是是JDK 1.5的新特征之一。該接口有幾個(gè)子接口:
 * (1)CachedRowSet:可以不用與數(shù)據(jù)源建立長(zhǎng)期的連接,只有當(dāng)從數(shù)據(jù)庫(kù)讀取數(shù)據(jù),
 * 或是往數(shù)據(jù)庫(kù)寫(xiě)入數(shù)據(jù)的時(shí)候才會(huì)與數(shù)據(jù)庫(kù)建立連接,它提供了一種輕量級(jí)的訪問(wèn)數(shù)據(jù)庫(kù)的方式,其數(shù)據(jù)均存在內(nèi)存中。
 * 避免了ResultSet在關(guān)閉Statement或Connection后無(wú)法讀取數(shù)據(jù)的問(wèn)題。
 * (2)JdbcRowSet:對(duì)ResultSet的對(duì)象進(jìn)行包裝,使得可以將ResultSet對(duì)象做為一個(gè)JavaBeans組件,
 * (3)FilteredRowSet:繼承自CachedRowSet,可以根據(jù)設(shè)置條件得到數(shù)據(jù)的子集。
 * (4)JoinRowSet:繼承自CachedRowSet,可以將多個(gè)RowSet對(duì)象進(jìn)行SQL Join語(yǔ)句的合并。
 * (5)WebRowSet:繼承自CachedRowSet,可以將WebRowSet對(duì)象輸出成XML格式。
 */
public class UsingRowSet {
	/**
	 * 使用CachedRowSet。
	 * 一旦獲得數(shù)據(jù),CachedRowSet就可以斷開(kāi)與數(shù)據(jù)庫(kù)的連接,
	 * 直到往數(shù)據(jù)庫(kù)寫(xiě)入數(shù)據(jù)的時(shí)候才需建立連接。
	 */
	public static void usingCachedRowSet() throws SQLException{
		CachedRowSet crs = new CachedRowSetImpl();
		// 設(shè)置CachedRowSet的屬性,用它可以直接連數(shù)據(jù)庫(kù)
        crs.setUrl("jdbc:mysql://127.0.0.1/studentdb");
        crs.setUsername("test");
        crs.setPassword("test");
        crs.setCommand("select * from student_basic where score > ?");
        crs.setDouble(1, 60);

		try {
			// 需要先加載驅(qū)動(dòng),否則在使用執(zhí)行時(shí)會(huì)找不到驅(qū)動(dòng)類(lèi)
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
		}
		// CachedRowSet的execute方法執(zhí)行SQL語(yǔ)句,
		// 首先會(huì)創(chuàng)建與數(shù)據(jù)庫(kù)的連接,然后將結(jié)果集取出來(lái),再關(guān)閉連接
		crs.execute();
		// 此時(shí)的CachedRowSet與數(shù)據(jù)庫(kù)是斷開(kāi)連接的
        System.out.println("使用CachedRowSet操作數(shù)據(jù)前:");
        OperateDB.showResultSet(crs);
        
        // 在斷開(kāi)連接的情況下可以操作數(shù)據(jù)
        crs.beforeFirst();
        while (crs.next()) {
            if (crs.getString("name").equals("mary")) {
                crs.updateDouble("score",75);
                // 要想將更新的數(shù)據(jù)提交到數(shù)據(jù)庫(kù),必須進(jìn)行下面兩步
                // 首先確認(rèn)要修改
                crs.updateRow();
                // 再調(diào)用acceptChanges方法獲得與數(shù)據(jù)庫(kù)的連接,將修改提交到數(shù)據(jù)庫(kù)
                crs.acceptChanges();
                break;
            }
        }
        System.out.println("使用CachedRowSet操作數(shù)據(jù)后:");
        OperateDB.showResultSet(crs);
        
        crs.close();
	}
	
	/**
	 * 使用JdbcRowSet。
	 * JdbcRowSet功能與ResultSet類(lèi)似,JdbcRowSet在操作時(shí)保持與數(shù)據(jù)庫(kù)的連接,
	 * JdbcRowSet返回的結(jié)果默認(rèn)是可以上下滾動(dòng)和可更新的。
	 */
	public static void usingJdbcRowSet() throws SQLException{
		JdbcRowSet jdbcrs = new JdbcRowSetImpl();
		// 設(shè)置JdbcRowSet的屬性,用它可以直接連數(shù)據(jù)庫(kù)
        jdbcrs.setUrl("jdbc:mysql://127.0.0.1/studentdb");
        jdbcrs.setUsername("test");
        jdbcrs.setPassword("test");
        jdbcrs.setCommand("select * from student_basic where score > ?");
        jdbcrs.setDouble(1, 70);

		try {
			// 需要先加載驅(qū)動(dòng),否則在使用執(zhí)行時(shí)會(huì)找不到驅(qū)動(dòng)類(lèi)
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
		}
		// JdbcRowSet的execute方法執(zhí)行SQL語(yǔ)句,首先獲得數(shù)據(jù)庫(kù)連接,再獲取結(jié)果集,
		// 與CachedRowSet的execute方法不同,執(zhí)行完后它不關(guān)閉連接,它會(huì)一直保持該連接,直到調(diào)用close方法。
        jdbcrs.execute();
        System.out.println("使用JdbcRowSet操作數(shù)據(jù)前:");
        OperateDB.showResultSet(jdbcrs);
        
        // 然后操作數(shù)據(jù)
        jdbcrs.beforeFirst();
        while (jdbcrs.next()) {
            if (jdbcrs.getString("name").equals("mary")) {
                jdbcrs.updateDouble("score",85);
                // 提交到數(shù)據(jù)庫(kù)
                jdbcrs.updateRow(); 
                // 因?yàn)樗旧硎沁B接到數(shù)據(jù)庫(kù)的,所以和CachedRowSet不同,它不需要再次獲得連接。
                break;
            }
        }
        System.out.println("使用JdbcRowSet操作數(shù)據(jù)后:");
        OperateDB.showResultSet(jdbcrs);
        
        // 關(guān)閉結(jié)果集,此時(shí)關(guān)閉數(shù)據(jù)庫(kù)連接
        jdbcrs.close();
	}
	
	/**
	 * 使用FilteredRowSet。
	 * FilteredRowSet接口中規(guī)定了可以設(shè)定過(guò)濾器,其過(guò)濾接口為Predicate接口,
	 * 必須實(shí)現(xiàn)Predicate接口中的evaluate方法
	 */
	public static void usingFilteredRowSet() throws SQLException{
		FilteredRowSet frs = new FilteredRowSetImpl();
		// 設(shè)置FilteredRowSet的屬性,用它可以直接連數(shù)據(jù)庫(kù)
        frs.setUrl("jdbc:mysql://127.0.0.1/studentdb");
        frs.setUsername("test");
        frs.setPassword("test");
        frs.setCommand("select * from student_basic where score > ?");
        frs.setDouble(1, 80);

		try {
			// 需要先加載驅(qū)動(dòng),否則在使用執(zhí)行時(shí)會(huì)找不到驅(qū)動(dòng)類(lèi)
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
		}
		// FilteredRowSet繼承CachedRowSet,
		// 所以execute方法功能與CachedRowSet的execute方法一樣

		frs.execute();
		// 此時(shí)的CachedRowSet與數(shù)據(jù)庫(kù)是斷開(kāi)連接的
        System.out.println("使用FilteredRowSet過(guò)濾數(shù)據(jù)之前:");
        OperateDB.showResultSet(frs);
        // 設(shè)置過(guò)濾器,過(guò)濾器必須實(shí)現(xiàn)Predicate接口定義的三個(gè)execute方法。
        frs.setFilter(new Predicate(){
        	public boolean evaluate(RowSet rs){
        		CachedRowSet crs=(CachedRowSet)rs;
        		// 如果名字為mary則返回true
        		try {
        			if (crs.getString("name").equals("mary")){
        				return true;
        			} 
        		} catch (SQLException e){
        		}
        		return false;
        	}
        	public boolean evaluate(Object arg0, int arg1) throws SQLException{
        		return false;
        	}
        	public boolean evaluate(Object arg0, String arg1) throws SQLException{
        		return false;
        	}
        });

        System.out.println("使用FilteredRowSet過(guò)濾數(shù)據(jù)之后:");
        OperateDB.showResultSet(frs);
        
        frs.close();
	}
	
	/**
	 * 使用JoinRowSet。
	 * JoinRowSet可以將多個(gè)RowSet對(duì)象進(jìn)行join合并,
	 * Join的列可以通過(guò)每個(gè)RowSet通過(guò)調(diào)用setMatchColumn方法來(lái)設(shè)置。
	 * setMatchColumn方式是Joinable接口定義的方法,五種類(lèi)型的RowSet規(guī)定都需要實(shí)現(xiàn)該接口。
	 * JoinRowSet繼承CachedRowSet,也不需要保持與數(shù)據(jù)庫(kù)的連接。
	*/
	public static void usingJoinRowSet() throws SQLException{
		JoinRowSet joinrs = new JoinRowSetImpl();
		
		CachedRowSet crs = new CachedRowSetImpl();
		// 設(shè)置CachedRowSet的屬性,用它可以直接連數(shù)據(jù)庫(kù)
		crs.setUrl("jdbc:mysql://127.0.0.1/studentdb");
		crs.setUsername("test");
		crs.setPassword("test");
		crs.setCommand("select * from student_basic");
		try {
			// 需要先加載驅(qū)動(dòng),否則在使用執(zhí)行時(shí)會(huì)找不到驅(qū)動(dòng)類(lèi)
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
		}
		// 獲取結(jié)果集
		crs.execute();
		// 設(shè)置結(jié)果集在Join時(shí)匹配的列名。
		crs.setMatchColumn("name");
		// 將結(jié)果集數(shù)據(jù)放入JoinRowSet
		joinrs.addRowSet(crs);
		crs.close();
		
		// 查另外一個(gè)表
		crs.setCommand("select name, address from student_address");
		crs.execute();
		crs.setMatchColumn("name");
		joinrs.addRowSet(crs);
		crs.close();
		
		System.out.println("使用JoinRowSet對(duì)多個(gè)結(jié)果集進(jìn)行Join操作:");
		// 此時(shí)兩個(gè)結(jié)果集已經(jīng)Join在一起了,
		// 表student_basic的name列和student_address的name列進(jìn)行匹配
		while (joinrs.next()){
			// name屬性公有,score屬性為表student_basic所有
			System.out.print(joinrs.getString("name") + "\t");
			System.out.print(joinrs.getDouble("score") + "\t");
			// address屬性為student_address所有
			System.out.println(new String(joinrs.getBytes("address")));
		}

        joinrs.close();
	}
	
	/**
	 * 使用WebRowSet。
	 * WebRowSet繼承自CachedRowSet,支持XML格式的查詢,更新等操作,
	 * 下面將WebRowSet對(duì)象輸出成XML格式到文件。
	*/
	public static void usingWebRowSet() throws SQLException{
		WebRowSet wrs = new WebRowSetImpl();
		
		// 設(shè)置CachedRowSet的屬性,用它可以直接連數(shù)據(jù)庫(kù)
		wrs.setUrl("jdbc:mysql://127.0.0.1/studentdb");
		wrs.setUsername("test");
		wrs.setPassword("test");
		wrs.setCommand("select * from student_basic");
		try {
			// 需要先加載驅(qū)動(dòng),否則在使用執(zhí)行時(shí)會(huì)找不到驅(qū)動(dòng)類(lèi)
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
		}
		// 獲取結(jié)果集
		wrs.execute();
		
		// 輸出到XML文件
		try {
			FileOutputStream out = new FileOutputStream("student_basic_data.xml");
			wrs.writeXml(out);
			out.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		wrs.close();
	}

	public static void main(String[] args) throws SQLException {
		UsingRowSet.usingCachedRowSet();
		UsingRowSet.usingJdbcRowSet();
		UsingRowSet.usingFilteredRowSet();
		UsingRowSet.usingJoinRowSet();
		UsingRowSet.usingWebRowSet();
	}
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩在线| 日韩免费视频一区| a亚洲天堂av| 成人av网站在线| 国产成人免费视频网站高清观看视频| 日韩成人精品在线| 老司机精品视频一区二区三区| 图片区日韩欧美亚洲| 亚洲成人av在线电影| 天天操天天色综合| 美女mm1313爽爽久久久蜜臀| 久久99久久99小草精品免视看| 久草精品在线观看| 国产成人99久久亚洲综合精品| 国产成人三级在线观看| 成人黄色电影在线 | 91丝袜美腿高跟国产极品老师| 国产不卡视频在线播放| 91在线免费视频观看| 欧美在线短视频| 日韩精品一区二区三区中文不卡| 精品久久久久久久久久久久久久久久久 | 欧美一级二级三级乱码| 2022国产精品视频| 亚洲精选一二三| 日本在线不卡一区| 丁香一区二区三区| 欧美日韩精品免费| 国产调教视频一区| 亚洲超丰满肉感bbw| 国产一二精品视频| 日本精品视频一区二区| 日韩一区二区三区在线视频| 国产校园另类小说区| 亚洲影院久久精品| 国产精品白丝jk白祙喷水网站| 91丝袜美腿高跟国产极品老师 | 国产成人av电影免费在线观看| 色天天综合色天天久久| 日韩精品专区在线影院观看| 亚洲欧美在线aaa| 日本v片在线高清不卡在线观看| 国产高清不卡一区| 欧美一区二区三区视频| 中文字幕在线观看不卡| 另类小说综合欧美亚洲| 色婷婷激情一区二区三区| 久久久夜色精品亚洲| 亚洲成av人片一区二区| 99国产欧美另类久久久精品| 精品av久久707| 婷婷开心激情综合| 色综合天天天天做夜夜夜夜做| 在线播放一区二区三区| 亚洲三级电影网站| 国产成人精品免费在线| 日韩欧美一区中文| 婷婷国产v国产偷v亚洲高清| av在线一区二区| 国产欧美日韩一区二区三区在线观看| 日韩精品一卡二卡三卡四卡无卡| 91社区在线播放| 国产精品国产馆在线真实露脸| 精品一区二区综合| 日韩一区二区在线看| 亚洲福中文字幕伊人影院| 一本在线高清不卡dvd| 国产精品国产三级国产有无不卡| 国产高清不卡二三区| 久久精品视频一区二区三区| 精品一区二区三区影院在线午夜| 日韩欧美自拍偷拍| 麻豆国产一区二区| 精品国精品自拍自在线| 美女一区二区三区在线观看| 欧美高清性hdvideosex| 天天综合日日夜夜精品| 在线成人午夜影院| 久久精品99国产精品日本| 日韩欧美一区二区三区在线| 蜜桃av噜噜一区二区三区小说| 日韩午夜在线观看| 国内久久精品视频| 国产精品久久久久久久午夜片| av中文字幕在线不卡| 有坂深雪av一区二区精品| 91国偷自产一区二区开放时间 | 亚洲电影中文字幕在线观看| 色菇凉天天综合网| 日韩精品亚洲专区| 精品黑人一区二区三区久久| 粉嫩高潮美女一区二区三区| 国产精品国产三级国产aⅴ无密码| 91亚洲精品一区二区乱码| 亚洲美女在线一区| 欧美一区二区三区视频免费| 国产老女人精品毛片久久| 国产区在线观看成人精品 | 久久精品国产免费| 国产欧美日韩在线看| 色偷偷成人一区二区三区91| 午夜一区二区三区在线观看| 日韩欧美高清在线| eeuss鲁片一区二区三区| 亚洲成人777| 国产亚洲va综合人人澡精品| 在线一区二区视频| 激情文学综合插| 尤物av一区二区| 久久综合狠狠综合| 色老汉一区二区三区| 久久精品72免费观看| 国产精品免费aⅴ片在线观看| 欧美色涩在线第一页| 国产成人在线影院| 日产欧产美韩系列久久99| 国产欧美精品国产国产专区 | 成人一区二区三区在线观看| 一区二区三区国产豹纹内裤在线| 欧美电视剧在线观看完整版| 99久久精品国产导航| 精品在线一区二区三区| 亚洲一区二区三区四区不卡| 国产天堂亚洲国产碰碰| 69堂成人精品免费视频| 99vv1com这只有精品| 国产精一区二区三区| 日韩精品三区四区| 亚洲综合网站在线观看| 国产欧美一区二区精品性色超碰| 欧美日韩你懂的| 日本韩国欧美国产| 成人一级片在线观看| 精品在线亚洲视频| 麻豆一区二区99久久久久| 亚洲激情成人在线| 国产精品不卡一区二区三区| 久久久久久久久一| 精品久久一区二区三区| 欧美一区二区在线免费播放| 91在线观看污| caoporn国产一区二区| 丁香婷婷综合五月| 国产大陆a不卡| 国产剧情一区二区| 国产精品77777竹菊影视小说| 男女性色大片免费观看一区二区| 天天综合网天天综合色| 亚洲资源在线观看| 亚洲自拍偷拍图区| 天堂精品中文字幕在线| 午夜欧美视频在线观看| 亚洲成精国产精品女| 日韩中文字幕亚洲一区二区va在线| 亚洲福利视频导航| 日韩av电影免费观看高清完整版 | 免费精品视频在线| 天天综合日日夜夜精品| 午夜电影网亚洲视频| 亚洲国产wwwccc36天堂| 天堂精品中文字幕在线| 青青草国产成人av片免费| 蜜臀精品一区二区三区在线观看| 日本中文一区二区三区| 久久丁香综合五月国产三级网站| 久久99久久99| 成人一区二区三区视频在线观看| 成人免费高清视频| 色婷婷激情综合| 欧美精品18+| 久久婷婷成人综合色| 国产日韩欧美制服另类| 中文字幕一区二区三区四区不卡| 亚洲人成网站影音先锋播放| 亚洲制服丝袜在线| 精品一区二区三区在线观看| 国产成人精品免费看| 99re热视频精品| 欧美日韩精品免费观看视频| 欧美mv日韩mv亚洲| 中文字幕一区二区三区乱码在线| 亚洲激情校园春色| 激情小说欧美图片| 色噜噜狠狠一区二区三区果冻| 欧美日韩一卡二卡| 久久精品男人天堂av| 亚洲欧洲日产国产综合网| 午夜亚洲国产au精品一区二区| 国产久卡久卡久卡久卡视频精品| 91成人看片片| 国产日韩欧美综合在线| 亚洲v日本v欧美v久久精品| 国产精品一区专区| 欧美裸体一区二区三区| 中文字幕一区二区三中文字幕| 久久精品国产99久久6| 91麻豆精品秘密| 亚洲精品一区二区在线观看| 亚洲愉拍自拍另类高清精品| 国产麻豆欧美日韩一区|