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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? operatedb.java

?? 利用java進行數據庫操作的類學習代碼
?? JAVA
字號:
package book.database;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 操作數據庫,包括增刪改查數據庫的記錄
 */
public class OperateDB {

	/**
	 * 查詢數據庫
	 * @param sm	與數據庫連接的Statement
	 * @param sql	查詢SQL語句
	 * @return 返回一個ResultSet結果集
	 */
	public static ResultSet queryDB(Statement sm, String sql){
		ResultSet rs = null;
		try {
			// 首先獲得表的所有數據
			rs = sm.executeQuery(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		} 
		return rs;
	}
	/**
	 * 修改數據庫
	 * @param con	數據庫的連接
	 * @param sql	修改SQL語句
	 * @return	返回修改影響的行數,為0表示一行數據都沒有被修改
	 * 			為Statement.EXECUTE_FAILED表示執行失敗。
	 */
	public static int updateDB(Connection con, String sql){
		Statement sm = null;
		int affectRows = 0;
		try {
			// 首先獲得表的所有數據
			sm = con.createStatement();
			affectRows = sm.executeUpdate(sql);
		} catch (SQLException e) {
			e.printStackTrace();
			// 如果出現異常,則表示執行失敗。
			affectRows = Statement.EXECUTE_FAILED;
		} finally {
			// 關閉Statement
			closeStatement(sm);
		}
		return affectRows;
	}
	/**
	 * 顯示一個ResultSet結果集
	 * 在顯示之前必須保證它所在的Statement是活著的
	 * @param rs
	 */
	public static void showResultSet(ResultSet rs){
		if (rs == null){
			return;
		}
		try {
			ResultSetMetaData md = rs.getMetaData();
			// 獲得該ResultSet中的列數
			int columnCount = md.getColumnCount();
			
			// 如果結果集的指針沒有位于第一條記錄的前面
			// 將結果集的指針指向第一條記錄的前面
			if(!rs.isBeforeFirst()){
				rs.beforeFirst();
			}

			// 從前往后的移動結果集指針,處理每條記錄
			while (rs.next()){
				// 每條記錄都包含columnCount個列
				for (int i=1; i<columnCount; i++){
					// 由于不知道該列的類型,所以用getObject方法獲取值
					System.out.print(rs.getObject(i) + "\t");
				}
				System.out.print(rs.getObject(columnCount) + "\r\n");
			}
			rs.beforeFirst();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 關閉Statement
	 * @param sm
	 */
	public static void closeStatement(Statement sm){
		if (sm != null){
			try {
				sm.close();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
		}
	} 
	
	/**
	 * 關閉連接
	 * @param con
	 */
	public static void closeConnection(Connection con){
		if (con != null){
			try {
				con.close();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
		}
	} 
	public static void main(String[] args) throws ClassNotFoundException,
			SQLException {
		String dbName = "studentdb";
		String userName = "test";
		String password = "test";
		String querySQL = "SELECT * FROM student_basic";
		String updateSQL = "UPDATE student_basic SET score=82 where name='mary'";
		String insertSQL = "INSERT INTO student_basic (name, age, score)"
			+ " VALUES ('zhangsan', 17, 86)";
		String deleteSQL = "DELETE FROM student_basic where name='wade'";
		
		Connection con = null;
		Statement sm = null;
		try {
			// 獲得數據庫連接
			con = DBConnector.getMySQLConnection(null, null, null, dbName,
					userName, password);
			sm = con.createStatement();
			// 查詢
			ResultSet rs = OperateDB.queryDB(sm, querySQL);
			System.out.println("修改數據表之前的數據:");
			OperateDB.showResultSet(rs);
			// 修改
			OperateDB.updateDB(con, updateSQL);
			OperateDB.updateDB(con, insertSQL);
			OperateDB.updateDB(con, deleteSQL);
			System.out.println();
			System.out.println("修改數據表之后的數據:");
			// 再查詢
			rs = OperateDB.queryDB(sm, querySQL);
			OperateDB.showResultSet(rs);
			System.out.println();
			
			// 從ResultSet中提取值時可以指定列名和類型
			// 將結果集指針指向第一條數據
			rs.absolute(1);
			System.out.print("name: " + rs.getString("name") + "\t");
			System.out.println("age: " + rs.getInt("age"));
			
			rs.absolute(3);
			System.out.print("name: " + rs.getString("name") + "\t");
			System.out.println("age: " + rs.getInt("age"));
			// 關閉結果集
			rs.close();
		} catch (ClassNotFoundException e1) {
			throw e1;
		} catch (SQLException e2) {
			throw e2;
		} finally {
			// 關閉數據庫連接
			closeStatement(sm);
			closeConnection(con);
		}
	}
	// TODO 需要確定statement或者connection關閉后,ResultSet是否還能用
	/***
	 * 注意:
	 * (1)一個Statement對象同時只能有一個結果集在活動.即使沒有調用ResultSet的close()方法,
	 * 只要打開第二個結果集就隱含著對上一個結果集的關閉.所以如果你想同時對多個結果集操作,
	 * 就要創建多個Statement對象,如果不需要同時操作,
	 * 那么可以在一個Statement對象上順序操作多個結果集.
	 * 
	 * (2)TODO
	 * 垃圾回收機制可以自動關閉它們
2.Statement關閉會導致ResultSet關閉
3.Connection關閉不會(?)導致Statement關閉
4.由于垃圾回收的線程級別是最低的,為了充分利用數據庫資源,有必要顯式關閉它們,尤其是使用Connection Pool的時候。
5.最優經驗是按照ResultSet,Statement,Connection的順序執行close
6.如果一定要傳遞ResultSet,應該使用RowSet,RowSet可以不依賴于Connection和Statement。
Java傳遞的是引用,所以如果傳遞ResultSet,你會不知道Statement和Connection何時關閉,不知道ResultSet何時有效
	 * 
	 */
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美大片一区二区| 日韩免费看的电影| 成人国产精品免费| 国产成人免费视频网站| 国产精品99久| 大尺度一区二区| 99精品在线免费| 91无套直看片红桃| 欧美日韩激情在线| 欧美v国产在线一区二区三区| 26uuu久久综合| 国产欧美一区二区三区沐欲| 国产精品久久久久影院色老大| 国产精品久久久久久久岛一牛影视 | 夜夜亚洲天天久久| 天天综合网天天综合色| 九色综合国产一区二区三区| 丰满少妇在线播放bd日韩电影| 成人丝袜高跟foot| 久久女同精品一区二区| 日韩视频免费观看高清完整版在线观看 | 国产精品久久久久永久免费观看 | 午夜免费欧美电影| 美女www一区二区| 成人免费视频一区二区| 91久久精品日日躁夜夜躁欧美| 91精品国产aⅴ一区二区| 久久亚洲二区三区| 亚洲国产日韩在线一区模特| 奇米综合一区二区三区精品视频| 国产91精品欧美| 51精品国自产在线| 中文字幕日韩一区| 玖玖九九国产精品| 91国产视频在线观看| 日韩精品自拍偷拍| 亚洲精品久久嫩草网站秘色| 精品一区二区国语对白| 91美女视频网站| 亚洲一级二级三级| 国产一二三精品| 欧美人xxxx| 亚洲中国最大av网站| 国产一区二区不卡老阿姨| 91传媒视频在线播放| 精品99999| 国产精品三级视频| 久久亚洲综合av| 亚洲成av人片在线| 99久久亚洲一区二区三区青草| 欧美日韩精品免费观看视频| 亚洲欧美综合色| 国产乱码字幕精品高清av | 91美女片黄在线观看| 26uuu亚洲| 秋霞影院一区二区| 欧美日韩三级一区二区| 亚洲视频中文字幕| 国产不卡视频在线观看| www成人在线观看| 麻豆国产一区二区| 在线播放中文字幕一区| 亚洲电影激情视频网站| 在线观看亚洲成人| 亚洲男帅同性gay1069| 99精品一区二区三区| 亚洲欧美国产毛片在线| 成人sese在线| 国产精品乱码一区二三区小蝌蚪| 麻豆成人久久精品二区三区红| 欧美精品亚洲二区| 日本中文字幕一区二区视频| 在线综合视频播放| 美女网站在线免费欧美精品| 日韩欧美一区二区免费| 激情小说欧美图片| 久久久久久久久久久99999| 国内一区二区在线| 国产精品免费视频网站| 成人av在线播放网站| 18欧美乱大交hd1984| 97se亚洲国产综合自在线| 亚洲欧美激情在线| 欧美日韩视频在线第一区| 精品在线免费视频| 久久综合九色综合欧美就去吻| 国产精品2024| 亚洲欧美电影院| 欧美区一区二区三区| 激情文学综合丁香| 国产精品色在线| 欧亚洲嫩模精品一区三区| 午夜伦理一区二区| 久久精品人人做人人爽人人| 不卡免费追剧大全电视剧网站| 亚洲女人****多毛耸耸8| 欧美日韩国产另类不卡| 国内精品伊人久久久久影院对白| 欧美国产日韩在线观看| 在线视频你懂得一区| 蜜桃视频免费观看一区| 国产精品你懂的在线| 在线精品亚洲一区二区不卡| 青青青伊人色综合久久| 国产婷婷色一区二区三区四区| 91久久精品网| 国产精品一区一区三区| 亚洲精品久久久久久国产精华液| 日韩一区二区中文字幕| 不卡的电影网站| 久久99精品久久久久久| 亚洲精品国久久99热| 精品国产伦一区二区三区免费| www.视频一区| 免费看日韩a级影片| 亚洲色图都市小说| 久久婷婷国产综合国色天香| 精品视频在线免费观看| 国产精品18久久久久久久久久久久| 亚洲毛片av在线| 精品国产凹凸成av人网站| 欧美专区在线观看一区| 高潮精品一区videoshd| 久久成人久久鬼色| 午夜久久久久久| 亚洲精品福利视频网站| 国产精品每日更新在线播放网址 | 高清国产一区二区| 日韩电影在线免费看| 国产精品综合二区| 日本在线不卡视频| 一区二区欧美视频| 亚洲欧洲一区二区在线播放| 精品国产乱码久久久久久蜜臀| 欧美人成免费网站| 欧美亚一区二区| 色哟哟精品一区| 91最新地址在线播放| 成人黄动漫网站免费app| 高清视频一区二区| 国产福利91精品一区| 久久99国内精品| 精品亚洲国产成人av制服丝袜 | 中文字幕免费不卡| 国产欧美一区二区精品秋霞影院| 日韩美女主播在线视频一区二区三区 | 久久99久久精品欧美| 日韩一区精品字幕| 日本怡春院一区二区| 理论电影国产精品| 精品一区二区三区不卡| 国产精品中文欧美| 国产91高潮流白浆在线麻豆 | 日本韩国一区二区三区| 一本色道**综合亚洲精品蜜桃冫 | 美女一区二区三区在线观看| 日韩电影在线免费看| 麻豆成人91精品二区三区| 国产一区二区不卡| 国产aⅴ综合色| 日本大香伊一区二区三区| 色8久久人人97超碰香蕉987| 欧美手机在线视频| 欧美成人午夜电影| 国产精品视频第一区| 最新久久zyz资源站| 一区二区三区日韩精品视频| 亚洲电影第三页| 精品一区二区三区在线播放| 国产传媒欧美日韩成人| 色综合视频在线观看| 欧美日韩在线综合| 中文字幕在线不卡一区| 一区二区三区精品视频在线| 日本不卡123| 懂色av一区二区夜夜嗨| 色就色 综合激情| 日韩欧美国产午夜精品| 中文字幕中文在线不卡住| 天堂精品中文字幕在线| 韩国av一区二区三区在线观看| 91丨九色丨黑人外教| 欧美一区二区三级| 亚洲欧洲av在线| 理论片日本一区| 欧美影院精品一区| 国产日韩亚洲欧美综合| 亚洲国产aⅴ天堂久久| 国产成人免费在线| 制服丝袜av成人在线看| 国产精品成人在线观看| 免费在线视频一区| 色综合久久综合| 精品国产一区二区三区久久影院 | 国产乱子伦一区二区三区国色天香 | 日本一区二区三区久久久久久久久不| 亚洲日本电影在线| 国模一区二区三区白浆| 6080午夜不卡| 亚洲永久精品大片|