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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sunsql.java

?? △項(xiàng)目名稱:陽光酒店管理系統(tǒng) △委托單位:清華IT學(xué)習(xí)認(rèn)證中心 △制作小組:華育國際 112301 班 CS結(jié)構(gòu)
?? JAVA
字號:
/**
 *##############################################################################
 *
 *	[ 項(xiàng)目名      ]  : 
 *  [ 公司名      ]  : SunshineSOFT
 *	[ 模塊名      ]  : 數(shù)據(jù)庫連接
 *	[ 文件名      ]  : sunsql.java
 *	[ 相關(guān)文件    ]  : 
 *	[ 文件實(shí)現(xiàn)功能]  : 連接及操作數(shù)據(jù)庫
 *	[ 作者        ]  : 顧俊
 *	[ 版本        ]  : 1.3
 *	----------------------------------------------------------------------------
 *	[ 備注        ]  : 
 *	----------------------------------------------------------------------------
 *	[ 修改記錄    ]  : 
 *
 *	[ 日  期 ]     [版本]         [修改人]         [修改內(nèi)容] 
 *	2006/03/31      1.0             顧俊            重新組織
 *	2006/04/05      1.1             顧俊            添加ODBC連接方式
 *	2006/04/08      1.2             顧俊            添加函數(shù) #A, #B, #C, #D
 *	2006/04/25      1.2             顧俊            添加函數(shù) #E
 *	##--------------------------------------------------------------------------
 *  			 版權(quán)所有(c) 2006-2007,  SunshineSOFT Corporation
 *	--------------------------------------------------------------------------##
 *	
 *	[ 函數(shù)說明    ]  :
 *	
 *	[## private sunsql() {} ] :  
 *		功能: 防止實(shí)例化sunsql對象
 *
 *  [## public static int executeUpdate(String sql) {} ] :
 *		功能: 執(zhí)行對數(shù)據(jù)庫更改的sql命令,并返回更改所影響的行數(shù)
 *
 *  [## public static ResultSet executeQuery(String sql) {} ] :
 *		功能: 執(zhí)行對數(shù)據(jù)庫的select查詢功能,并返回查詢所得到的結(jié)果
 *
 *	[## public static int recCount(ResultSet rs)) {} ] :
 *		功能: 獲得指定結(jié)果集的記錄數(shù)量
 *
 *	[## public static long getPrimaryKey() {} ] : #A
 *		功能: 通過服務(wù)器當(dāng)前的時間獲得一個主鍵
 *
 *	[## public static void initJComboBox (JComboBox cb, String sqlCode) {} ] : #B
 *		功能: 按SQL語句從數(shù)據(jù)庫選出Items加入JComboBox
 *
 *	[## public static void initJList (JList jt, String sqlCode) {} ] : #E
 *		功能: 按SQL語句從數(shù)據(jù)庫選出數(shù)據(jù)加入JList
 *
 *	[## public static void initDTM (DefaultTableModel fdtm, String sqlCode) {} ] : #C
 *		功能: 按SQL語句從數(shù)據(jù)庫中獲得數(shù)據(jù)(結(jié)果集),添加到fdtm中(也可以說JTable中)
 *
 *	[## public static int runTransaction (String updateCode[]) {} ] : #D
 *		功能: 利用事務(wù)的模式以updateCode中的sql語句對數(shù)據(jù)庫進(jìn)行更新
 *
 *
 *  [ 遺留問題    ]  :
 *
 *	[ 數(shù)據(jù)庫連接關(guān)閉問題 ] : 現(xiàn)在: 只有應(yīng)用程序完全退出時數(shù)據(jù)庫連接才關(guān)閉
 *                           目的: 每次數(shù)據(jù)庫操作完成后都要關(guān)閉
 *	
 *
 *##############################################################################
 */
package com.sunshine.sunsdk.sql;

import java.sql.*;
import javax.swing.*;
import javax.swing.table.*;
import com.sunshine.sunsdk.system.*;


public class sunsql {
	
	private static Statement ste = null;
	private static Connection conn = null;
	
	static {
		try {
			if(sunini.getIniKey ("Default_Link").equals ("1")) {		//JDBC連接方式
				String user = sunini.getIniKey ("UserID");
				String pwd  = sunini.getIniKey ("Password");
				String ip   = sunini.getIniKey ("IP");
				String acc  = sunini.getIniKey ("Access");
				String dbf  = sunini.getIniKey ("DBFname");
				String url  = "jdbc:microsoft:sqlserver://" + ip + ":" + acc + ";" + "databasename=" + dbf;
				//注冊驅(qū)動
				DriverManager.registerDriver (new com.microsoft.jdbc.sqlserver.SQLServerDriver());
				//獲得一個連接
				conn = DriverManager.getConnection (url, user, pwd);
			}
			else {
				//注冊驅(qū)動										//JDBCODBC連接方式
				DriverManager.registerDriver (new sun.jdbc.odbc.JdbcOdbcDriver());
				//獲得一個連接
				conn = DriverManager.getConnection ("jdbc:odbc:" + sunini.getIniKey("LinkName"));
			}
			//設(shè)置自動提交為false
			conn.setAutoCommit (false);
			//建立高級載體
			ste = conn.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
	    }
	    catch (Exception ex) {
	    	JOptionPane.showMessageDialog (null, "數(shù)據(jù)庫連接失敗...", "錯誤", JOptionPane.ERROR_MESSAGE);
	    	System.exit(0);
	    	//ex.printStackTrace();
	    }//End try
	}
	
	/**=======================================================================**
	 *		[## private sunsql() {} ]:		構(gòu)造函數(shù)
	 *			參數(shù)   :無
	 *			返回值 :無
	 *			修飾符 :private
	 *			功能   :防止實(shí)例化sunsql對象
	 **=======================================================================**
	 */
	private sunsql(){
	}
	
	/**=======================================================================**
	 *		[## public static int executeUpdate(String sql) {} ] :	
	 *			參數(shù)   :String 對象, 表示需要執(zhí)行的sql語句
	 *			返回值 :int, 表示此sql語句對數(shù)據(jù)庫影響了幾行
	 *			修飾符 :public static 可以不實(shí)例化對象而直接調(diào)用方法
	 *			功能   :執(zhí)行對數(shù)據(jù)庫更改的sql命令,并返回更改所影響的行數(shù)
	 **=======================================================================**
	 */
	public static int executeUpdate(String sql) {
//		System.out.println ("Update SQL : " + sql);
		int i = 0 ;
		try {
			i = ste.executeUpdate(sql) ;
			conn.commit();
		}catch(Exception e) {
			e.printStackTrace() ;
		}//End try
		return i ;
	}
	
	/**=======================================================================**
	 *		[## public static int runTransaction (String updateCode[]) {} ] :	
	 *			參數(shù)   :String[]是字符串?dāng)?shù)組, 表示需要執(zhí)行的所有sql語句
	 *			返回值 :int, 表示sql語句執(zhí)行的情況, (i==數(shù)組長度)為更新成功
	 *			修飾符 :public static 可以不實(shí)例化對象而直接調(diào)用方法
	 *			功能   :利用事務(wù)的模式以updateCode中的sql語句對數(shù)據(jù)庫進(jìn)行更新
	 **=======================================================================**
	 */
	public static int runTransaction (String updateCode[]) {
		int ok = 0, i = 0;
		int row = updateCode.length;		//更新語句的數(shù)量
		try {
			for (i = 0; i < row; i++) {
				ok = ste.executeUpdate (updateCode[i]);		//執(zhí)行SQL語句
				if(ok == 0) {				//如果不成功,則跳出循環(huán)
					System.out.println ("sunsql.runTransaction(): updateCode[" + i + "] 失敗" + ok);
					break;
				}
				System.out.println ("sunsql.runTransaction(): updateCode[" + i + "] 成功 " + ok);
			}
			//根據(jù)變量 ok 判斷上面循環(huán)是否正常運(yùn)行完畢
			if(ok == 0) {
				conn.rollback ();		//(ok == 0)表示更新過程中出錯,回滾數(shù)據(jù)
				System.out.println ("sunsql.runTransaction(): Update data false, rollback");
			}
			else {
				conn.commit ();			//(ok != 0)基本上是所有SQL語句運(yùn)行成功, 則提交給數(shù)據(jù)庫
				System.out.println ("sunsql.runTransaction(): Update finish");
			}
		}
	    catch (Exception ex) {
	    	System.out.println ("sunsql.runTransaction(): Update false ...");
	    }
		return i;
	}
	
	/**=======================================================================**
	 *		[## public static ResultSet executeQuery(String sql) {} ] :
	 *			參數(shù)   :String 對象, 表示需要執(zhí)行的sql語句
	 *			返回值 :ResultSet對象, 表示此查詢語句返回的結(jié)果集
	 *			修飾符 :public static 可以不實(shí)例化對象而直接調(diào)用方法
	 *			功能   :執(zhí)行對數(shù)據(jù)庫的select查詢功能,并返回查詢所得到的結(jié)果
	 **=======================================================================**
	 */
	public static ResultSet executeQuery(String sql) {
//		System.out.println ("Query SQL : " + sql);
		ResultSet rs = null ;
		try {
			rs = ste.executeQuery(sql) ;
		}catch(Exception e) {
			e.printStackTrace() ;
		}//End try
		return rs ;
	}
	
	/**=======================================================================**
	 *		[## public static int recCount(ResultSet rs)) {} ] :
	 *			參數(shù)   :ResultSet 對象, 表示目標(biāo)結(jié)果集
	 *			返回值 :int, 表示結(jié)果集中的記錄個數(shù)
	 *			修飾符 :public static 可以不實(shí)例化對象而直接調(diào)用方法
	 *			功能   :獲得指定結(jié)果集的記錄數(shù)量
	 **=======================================================================**
	 */
	public static int recCount(ResultSet rrs) {
		int i = 0;
		try {
			if(rrs.getRow() != 0)
				rrs.beforeFirst();
			//while用于計算rs的記錄條數(shù)
			while(rrs.next())
				i++;
			rrs.beforeFirst();	
	    }catch(Exception ex) {
	    	ex.printStackTrace();
	    }//End try
		return i;
	}
	
	/**=======================================================================**
	 *		[## public static long getPrimaryKey() {} ] :
	 *			參數(shù)   :無
	 *			返回值 :long, 表示從服務(wù)器獲得的主鍵
	 *			修飾符 :public static 可以不實(shí)例化對象而直接調(diào)用方法
	 *			功能   :通過服務(wù)器當(dāng)前的時間獲得一個主鍵
	 **=======================================================================**
	 */
	public static long getPrimaryKey() {
		long pk = 0;
		
		try {
			//獲得服務(wù)器時間
			ResultSet rs = executeQuery("select getdate()");
			rs.next();
			pk = rs.getTimestamp(1).getTime();
	    }
	    catch (Exception ex) {
	    	System.out.println ("sunsql.getPrimaryKey (): false");
	    }
	    return pk;
	}
	
	/**=======================================================================**
	 *		[## public static void initJComboBox (JComboBox cb, String sqlCode) {} ] :
	 *			參數(shù)   :JComboBox表示要加數(shù)據(jù)的下拉框, String對象表示一條SQL語句
	 *			返回值 :JComboBox, 表示返回一個加好Item的JComboBox對象
	 *			修飾符 :public static 可以不實(shí)例化對象而直接調(diào)用方法
	 *			功能   :按SQL語句從數(shù)據(jù)庫選出Items加入JComboBox
	 **=======================================================================**
	 */
	public static void initJComboBox (JComboBox cb, String sqlCode) {
		cb.removeAllItems();
		try {
			ResultSet rs = executeQuery (sqlCode);
			int row = recCount (rs);
			rs.beforeFirst ();
			//從結(jié)果集中取出Item加入JComboBox中
			for (int i = 0; i < row; i++) {
				rs.next();
				cb.addItem (rs.getString (1));
		    }
	    }
	    catch (Exception ex) {
	    	System.out.println ("sunsql.initJComboBox (): false");
	    }
	}
	
	/**=======================================================================**
	 *		[## public static void initJList (JList jt, String sqlCode) {} ] :
	 *			參數(shù)   :JList表示要加數(shù)據(jù)的列表框, String對象表示一條SQL語句
	 *			返回值 :無
	 *			修飾符 :public static 可以不實(shí)例化對象而直接調(diào)用方法
	 *			功能   :按SQL語句從數(shù)據(jù)庫選出數(shù)據(jù)加入JList
	 **=======================================================================**
	 */
	public static void initJList (JList jt, String sqlCode) {
		try {
			ResultSet rs = executeQuery (sqlCode);
			int row = recCount (rs);
			String list[] = new String[row];
			//從結(jié)果集中取出數(shù)據(jù)存入數(shù)組中
			for (int i = 0; i < row; i++) {
				rs.next();
				list[i] = rs.getString(1);
		    }//Endfor
		    jt.setListData(list);	//初始化List
	    }
	    catch (Exception ex) {
	    	System.out.println ("sunsql.initJList(): false");
	    }//Endtry
	}
	
	/**=======================================================================**
	 *		[## public static void initDTM (DefaultTableModel fdtm, String sqlCode) {} ] :
	 *			參數(shù)   :DefaultTableModel對象表示要添充數(shù)據(jù)的表模式
	 *					 String對象表示一條SQL語句
	 *			返回值 :無
	 *			修飾符 :public static 可以不實(shí)例化對象而直接調(diào)用方法
	 *			功能   :按SQL語句從數(shù)據(jù)庫中獲得數(shù)據(jù),添加到fdtm中(也可以說JTable中)
	 **=======================================================================**
	 */
	public static void initDTM (DefaultTableModel fdtm, String sqlCode) {
		try {
			ResultSet rs = executeQuery( sqlCode );	//獲得結(jié)果集
			int row = recCount( rs );				//獲得結(jié)果集中有幾行數(shù)據(jù)
			ResultSetMetaData rsm =rs.getMetaData();	//獲得列集
			int col = rsm.getColumnCount();		//獲得列的個數(shù)
			String colName[] = new String[col];
			//取結(jié)果集中的表頭名稱, 放在colName數(shù)組中
			for (int i = 0; i < col; i++) {
				colName[i] = rsm.getColumnName( i + 1 );
			}//End for
			rs.beforeFirst();
			String data[][] = new String[row][col];
			//取結(jié)果集中的數(shù)據(jù), 放在data數(shù)組中
			for (int i = 0; i < row; i++) {
				rs.next();
				for (int j = 0; j < col; j++) {
					data[i][j] = rs.getString (j + 1);
					//System.out.println (data[i][j]);
			    }
			}//End for
			fdtm.setDataVector (data, colName);
	    }
	    catch (Exception ex) {
	    	System.out.println ("sunsql.initDTM (): false");
	    }//End try
	}

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩亚洲欧美中文三级| 欧美精品粉嫩高潮一区二区| 亚洲一区电影777| 久久综合网色—综合色88| 日本韩国精品在线| 国产精华液一区二区三区| 亚洲一区av在线| 国产精品乱码人人做人人爱| 91精品国产一区二区三区蜜臀| 北条麻妃一区二区三区| 久久国内精品视频| 亚洲第一成年网| 狠狠狠色丁香婷婷综合激情| 亚洲精品日韩一| 国产精品美女久久久久aⅴ| 91精品在线免费观看| 97国产精品videossex| 国产精品一区二区不卡| 秋霞影院一区二区| 亚洲高清视频在线| 亚洲美女淫视频| 中文字幕在线视频一区| 久久亚洲精精品中文字幕早川悠里| 欧美日韩成人综合天天影院| 色天使久久综合网天天| 99v久久综合狠狠综合久久| 国产福利一区在线| 国产一区二区精品久久99| 久久av资源站| 免费在线看成人av| 美女被吸乳得到大胸91| 日韩影院免费视频| 日韩专区一卡二卡| 亚洲444eee在线观看| 亚洲主播在线播放| 亚洲国产一区二区视频| 亚洲精品久久嫩草网站秘色| 天堂资源在线中文精品| 中文字幕亚洲精品在线观看| 日本一区二区三区dvd视频在线| 欧美精品一区二区三区在线 | 日韩女同互慰一区二区| 欧美一级欧美一级在线播放| 91精品啪在线观看国产60岁| 欧美电影一区二区三区| 3atv一区二区三区| 欧美大胆人体bbbb| 久久久精品黄色| 中文字幕精品一区| 国产精品超碰97尤物18| 亚洲同性gay激情无套| 亚洲激情图片一区| 亚洲第一激情av| 免费欧美高清视频| 国产一区二区调教| 不卡av电影在线播放| a在线欧美一区| 色偷偷久久人人79超碰人人澡| 91成人看片片| 91精品婷婷国产综合久久性色| 日韩精品自拍偷拍| 亚洲国产精品v| 亚洲图片欧美一区| 久久99精品久久久久久国产越南| 国产一区日韩二区欧美三区| 成人性视频免费网站| 色哟哟日韩精品| 欧美精品免费视频| 国产午夜久久久久| 一区二区三区国产精华| 男人的天堂亚洲一区| 国产精品羞羞答答xxdd| 91日韩精品一区| 欧美一级二级在线观看| 国产欧美一区二区三区网站| 樱桃视频在线观看一区| 免费精品99久久国产综合精品| 懂色av中文字幕一区二区三区| 色婷婷av久久久久久久| 精品国产一区二区三区四区四 | 国产精品综合久久| 色菇凉天天综合网| 欧美成人性福生活免费看| 国产精品国产自产拍在线| 视频一区二区三区入口| 高清成人在线观看| 69av一区二区三区| 亚洲欧洲精品天堂一级| 美女www一区二区| 色综合久久中文字幕综合网| 欧美大片日本大片免费观看| 亚洲色图一区二区三区| 久久国内精品自在自线400部| 色综合久久久久网| 2017欧美狠狠色| 午夜视黄欧洲亚洲| www.欧美日韩| 久久精品这里都是精品| 亚洲成人资源在线| 成人黄色国产精品网站大全在线免费观看 | 成人一区二区三区视频| 4438亚洲最大| 亚洲美女屁股眼交| 国产精品2024| 精品久久久久久综合日本欧美| 亚洲精品日韩综合观看成人91| 国产成人鲁色资源国产91色综| 欧美一区二区三级| 亚洲图片欧美视频| 91小视频免费观看| 国产精品美女久久久久aⅴ| 久久成人免费网| 91精品国产麻豆国产自产在线| 伊人色综合久久天天人手人婷| 成人做爰69片免费看网站| 欧美成人a视频| 日本成人在线电影网| 欧美少妇一区二区| 一区二区三区四区高清精品免费观看| 国产精品99久久久久久有的能看| 日韩一区二区麻豆国产| 天堂在线亚洲视频| 欧美三级蜜桃2在线观看| 亚洲精品国产精华液| 99视频精品全部免费在线| 欧美激情在线观看视频免费| 韩国三级电影一区二区| 欧美va亚洲va在线观看蝴蝶网| 午夜激情一区二区| 欧美精品日韩精品| 奇米影视7777精品一区二区| 欧美日韩一区二区三区高清 | 粗大黑人巨茎大战欧美成人| 久久只精品国产| 国产一区二区三区日韩| 久久久噜噜噜久久人人看| 国产一区在线看| 久久综合久色欧美综合狠狠| 韩国在线一区二区| 国产亚洲欧美一区在线观看| 国产精品一区二区果冻传媒| 亚洲国产激情av| 99re热这里只有精品视频| 国产精品久久久久久久久图文区| 波多野洁衣一区| 一区二区三区精品久久久| 欧美三级午夜理伦三级中视频| 一二三区精品视频| 欧美精品日韩一区| 九色porny丨国产精品| 久久综合九色综合97婷婷| 国产成人在线视频播放| 国产精品福利电影一区二区三区四区| av不卡在线观看| 一区二区在线观看免费视频播放| 91成人免费电影| 久久se精品一区二区| 欧美国产视频在线| 欧美性受极品xxxx喷水| 美日韩一区二区三区| 国产午夜精品久久久久久免费视| 成人黄色网址在线观看| 亚洲午夜精品网| 欧美不卡激情三级在线观看| 国产高清成人在线| 亚洲综合男人的天堂| 精品入口麻豆88视频| 成人看片黄a免费看在线| 亚洲国产日日夜夜| 精品国产一区二区亚洲人成毛片| 成年人网站91| 亚洲成在人线在线播放| 久久久久久久精| 91福利精品第一导航| 蜜桃视频免费观看一区| 国产精品久久久久久久第一福利| 欧美最猛黑人xxxxx猛交| 精品一区二区三区香蕉蜜桃| 国产精品福利一区二区| 欧美一级片在线看| 久久蜜桃av一区二区天堂| 色婷婷激情久久| 国产在线精品一区二区| 一区二区三区.www| 久久久久久影视| 欧美日韩国产经典色站一区二区三区| 国产一区久久久| 亚洲国产日韩在线一区模特| 久久久久久9999| 欧美精品tushy高清| 成人国产精品免费观看动漫 | 亚洲va国产天堂va久久en| 久久免费美女视频| 91精品在线一区二区| 色哟哟精品一区| 国产a区久久久| 美国十次综合导航| 亚洲一级不卡视频| 国产精品福利av| 国产色一区二区|