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

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

?? day02.txt

?? JDBC描述詳解JDBC描述詳解JDBC描述詳解JDBC描述詳解
?? TXT
字號:
JDBC_day02   langna  2007-9-7    星期五
wanghg@tarena.com.cn
回顧:   
    con = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.201:1521:tarena", 
    		                                                                    "xjh0704", "xjh0704");
    另外一種注冊方法:
        Properties p = new Properties();
        p.setProperty("user", "xjhsd0704");
        p.setProperty("password", "xjhsd0704");
        Connection con = d.connect("jdbc:oracle:thin:@192.168.0.20:1521:tarena", p);
    另外一種方式:    
    jdbc:oracle:thin:xjh0704/xjh0704@192.168.0.20:1521:tarena
    
    java類型是靜態類型,編譯器檢查類型;字符串只檢查類型,不檢查內容;
   
    注意:  
    
     同一個statement 得到結果集之后沒有去遍歷結果集,
                而是做了其他操作(插入或修改)的話,結果集就不能用了,為空了;
     先做插入或修改操作,然后再得到結果集去遍歷,不會有什么問題;   
     
 一、設計
    封裝:避免重復的代碼;
    抽象:將具體的細節、量抽出來,把邏輯,形式留下;
    依賴倒轉:原來的設計是寫具體的類,依賴倒轉就是將具體的抽取出來;
    
    寫一個工具類:JdbcUtil ,方法都設成靜態方法;
    加載驅動放到初始化代碼塊里;只加載一次就行;
    
public class JdbcUtil {
   //靜態代碼塊加載驅動;
   static{
        try {
		Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
    }
     //得到數據庫連接
    public static Connection getConnection(){
        Connection con =null;
        try {
		con = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.201:1521:tarena",
			                                         "xjh0704", "xjh0704");
		} catch (SQLException e) {
			e.printStackTrace();
		}
        return  con;
    }
    	   
   //釋放數據庫資源
    public static void close(ResultSet rs,Statement stmt,Connection con){
	   if(rs!=null){
	     try{
		   rs.close();
		 }catch(SQLException e){
		   e.printStackTrace();
		 }
	   }
	   if(stmt!=null){
	     try{
		   stmt.close();
		 }catch(SQLException e){
		   e.printStackTrace();
		 }
	   }
	   if(con!=null){
	     try{
		   con.close();
		 }catch(SQLException e){
		   e.printStackTrace();
		 }
	   }
    }
    //重載一個關閉方法
    public static void close(Object o){
	   try{
	     if(o instanceof ResultSet){
	      ((ResultSet)o).close();
	     }else if(o instanceof Statement){
	      ((Statement)o).close();
	     }else if(o instanceof Connection){
	      ((Connection)o).close();
	     }
	   }catch(SQLException e){
	     e.printStackTrace();
	   }
    } 
}   

二、PreparedStatement概述;預編譯的
1、概括:與Statement比較
    
    效率高;
    清晰(類型);
    結構:1、SQL參數化(Statement中SQL是純字符串的)
              2、SQL預編譯
              
    Statement  將 SQL 送到數據庫 ---> 編譯---> 運行---> 再返回給應用程序 
    有1000條記錄的話就送1000次;編譯1000次,運行1000次;
    相當于sqlplus ,一條命令執行一次;
    
    Preparement "insert into t_test values(?,?)" //占位符;
                    ---> 發到數據庫可以編譯但不能運行---> 等參數傳過來再運行;
    有1000條記錄,編譯一次,運行1000次;
   ************************************
    Statement  stmt=null;
    stmt = con.createStatement();
    sql="insert into t_test values(1,'tony')"
    //直接送sql語句;象一個表達式
    stmt.executeUpdate(sql);
    ***********************************
    PreraredStatement  ps=null;//象方法一樣
    sql="insert into t_test  values(?,?)");
    
    //1、準備一條sql語句
    ps=con.prepareStatement(sql);
    //2、往ps對象設置參數值;檢查類型是否兼容;
    ps.setInt(1,8);
    ps.setString(2,"Tony");
    //3、送到數據庫執行
    ps.executeUpdate();
	
2、SQL:同構;sql語句除了參數不同其他都一樣;
               異構:除了參數不同,其他地方有不同的就是異構的;
                        比如 insert 和 update;或者表不同也是異構的;
    不管同構的還是異構的都用 PreparedStatement  
    同構的更能發揮它的優勢;
    select 一般是異構的,但是執行一次返回一個結果集就行了;
    update/insert 一般都是同構的,用PreparedStatement;
    
    對客戶端來說并沒有減少工作量,但是對數據庫來說減少了工作量;
    
 三、元數據:
1、 ResultSetMetaData
	元數據是用來描述數據的數據,ResultSetMetaData就是來描述結果集的
	列的類型和屬性信息,比如可以通過它得到結果集的列數,列名等。
	具體可在API中查閱java.sql.ResultSetMetaData。
	ResultSetMetaData對象可以通過ResultSet對象的getMetaData()來得到。
	
	ResultSetMetaData對象有以下三個方法比較常用:
	getColumnCount():獲得實際列數
	getColumnName(int colnum):獲得指定列的列名
	getColumnType(int colnum):獲得指定列的數據類型(Types里面的類型,存放的是整數)
        getColumnTypeName(); 數據庫的類型
        JDBC API :JDBC --- JAVA --- 數據庫類型
        類型對照表:String 范圍
       //1、獲取結果集元數據
       ResultSetMetaData  md=rs.getMetaData();
       //2、從結果集元數據中讀取字段個數
         int column=md.getColumnCount();
				
       //3、利用元數據讀取字段名和字段值
       for(int i=1;i<=column;i++) {
		System.out.println(md.getColumnName(i)+"\t");
	}
	
2、數據庫元數據:
        DatabaseMetaData
        getURL(),獲得連接數據庫的URL
        getDatabaseProductName() 獲得數據庫產品的名稱
        getDriverVersion() 獲得JDBC驅動程序的String形式的版本號
        getUserName() 獲得數據庫用戶名。
        
        ResultSet   getTables(參數)獲得數據庫中該用戶的所有表
        參數:
            catalog : null ,
            schema : 用戶名;如"OPENLAB"
            table_name:表名,可以用通配符"%TEST"
            types: 類型;是String[] 格式的;候選類型是:"TABLE"、"VIEW"、"SYSTEM TABLE"
            
       //1獲取數據庫元數據
	DatabaseMetaData  dbmd=con.getMetaData();
	//2讀取特定表信息;獲得結果集
	String[] types=new String[1];
	types[0]="TABLE";//必須是大寫
	rs=dbmd.getTables(null, "OPENLAB","%", types);
        //3遍歷結果集,輸出
四、事務Transaction
1、原子操作:不可分割的操作;
    atom: 原子操作,代表不可再分操作;
2、事務:
    事務就是將一組數據庫操作變為原子操作;事務是達成原子操作的一個途徑;
    事務是針對原子操作的,要求原子操作不可再分,要求原子操作必須同時成功同時失敗。
    事務是捆綁的原子操作的邊界。
    
    事務由數據庫服務器來實現的,我們只是使用它;
    我們寫的代碼,數據庫都將其設為自動提交;插入10條記錄就commit 10次;
    
    使用事務的語法:
     1) 關閉自動提交(開始一個用戶的事務);
     con.setAutoCommite(false); 打開事務就要關閉自動提交。
     如果不關掉,則是數據庫的事務,將每次提交作為一個事務;
     不用事務時要把setAutoCommite(true);
     2)正常的進行若干"相關"的數據庫操作;
     3)如果一切正常,用戶可以選擇提交 con.commit();
        也可以選擇回滾 con.rollback();
     4)任何一個操作失敗,就回滾;在catch語句塊中con.rollback();
        在提交和回滾時舊的事務結束,新的事務開始;
    
    
聲明一下:
    從我最近對大家的觀察,發現有相當一部分同學上課并沒有好好去記筆記;
    這樣對記憶還有學習的影響很不好,所以以后我不再給大家發筆記了,
    希望大家自己上課好好聽課,好好記筆記。
    

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品亚洲成a人| av一二三不卡影片| 国产精品理论在线观看| 欧美日韩国产123区| 国产成人av福利| 亚洲va天堂va国产va久| 国产精品国产自产拍在线| 69堂亚洲精品首页| 91搞黄在线观看| 成人精品一区二区三区四区| 免费观看一级欧美片| 一区二区三区四区精品在线视频| 久久日韩粉嫩一区二区三区| 欧美丰满少妇xxxxx高潮对白| 高清不卡在线观看av| 麻豆精品新av中文字幕| 亚洲综合激情网| 国产精品久久久久久久浪潮网站| 日韩一级完整毛片| 欧美日韩国产系列| 欧美亚洲综合在线| 91麻豆文化传媒在线观看| 成人综合在线视频| 国产高清成人在线| 久久99精品视频| 捆绑变态av一区二区三区| 亚洲成av人片观看| 亚洲最新视频在线观看| 亚洲天堂网中文字| 日韩一区中文字幕| 欧美激情一区三区| 久久精品欧美一区二区三区不卡| 欧美一级欧美三级在线观看| 欧美日韩一区中文字幕| 日本二三区不卡| 一本色道久久综合狠狠躁的推荐 | 成人短视频下载| 国产麻豆欧美日韩一区| 久久精品国产99久久6| 裸体一区二区三区| 美洲天堂一区二卡三卡四卡视频| 午夜精品久久久久久久99水蜜桃| 午夜影院久久久| 亚洲国产欧美一区二区三区丁香婷| 经典三级在线一区| 麻豆成人久久精品二区三区小说| 午夜精品久久久久久不卡8050| 亚洲国产精品一区二区久久恐怖片| 一个色在线综合| 亚洲成人免费在线| 亚洲成国产人片在线观看| 亚洲成人1区2区| 免费国产亚洲视频| 国产精品一级黄| 99久久99久久免费精品蜜臀| 99r国产精品| 在线看日韩精品电影| 精品视频色一区| 日韩欧美国产电影| 久久一留热品黄| 国产女主播在线一区二区| 亚洲视频你懂的| 午夜精品久久久久久久99水蜜桃| 蜜桃一区二区三区在线观看| 国产精品夜夜爽| 91在线视频在线| 在线看国产日韩| 日韩午夜激情免费电影| 国产午夜亚洲精品不卡| 中文字幕一区视频| 亚洲高清免费一级二级三级| 奇米一区二区三区| 国产一区二区按摩在线观看| 成人av在线网| 欧美日韩高清影院| 久久久亚洲午夜电影| 专区另类欧美日韩| 日本不卡一区二区三区| 国产精品一区二区在线观看不卡| 91无套直看片红桃| 6080亚洲精品一区二区| 国产三级精品三级| 亚洲一线二线三线视频| 国模套图日韩精品一区二区| 972aa.com艺术欧美| 欧美一区二区福利视频| 国产精品国产三级国产aⅴ原创| 日韩不卡手机在线v区| 国产99精品国产| 制服视频三区第一页精品| 日本一区二区成人| 午夜精品爽啪视频| 99久久99久久免费精品蜜臀| 亚洲成精国产精品女| 国产精品888| 欧美日韩成人综合天天影院| 欧美国产日韩a欧美在线观看 | 国产麻豆精品在线| 91成人国产精品| 久久久99精品免费观看不卡| 午夜精品影院在线观看| 国产福利一区二区三区在线视频| 欧美老肥妇做.爰bbww视频| 中文一区二区在线观看| 麻豆国产91在线播放| 欧美亚洲禁片免费| 中文字幕在线不卡国产视频| 国产一区二区不卡在线| 欧美一区二区女人| 午夜欧美电影在线观看| 色综合天天视频在线观看| 国产欧美一二三区| 国产综合久久久久久久久久久久| 91精品国产综合久久久久久漫画| 亚洲精品国产一区二区三区四区在线 | 蜜桃一区二区三区在线| 欧美日韩一区三区| 亚洲人成网站色在线观看| 国产黄色成人av| 欧美sm极限捆绑bd| 日韩成人一区二区| 欧美日韩国产系列| 亚洲图片欧美综合| 色婷婷一区二区三区四区| 《视频一区视频二区| 国产成a人亚洲| 欧美激情一区不卡| 国产成人福利片| 欧美激情中文字幕| 国产伦精品一区二区三区免费| 欧美性一区二区| 一区二区三区av电影| 成人自拍视频在线观看| 久久久亚洲精品石原莉奈| 美女一区二区久久| 8x8x8国产精品| 日本aⅴ精品一区二区三区 | 青青草97国产精品免费观看无弹窗版| 91香蕉国产在线观看软件| 26uuu国产一区二区三区| 麻豆91精品视频| 久久综合丝袜日本网| 美女视频免费一区| 欧美成人三级电影在线| 香蕉久久夜色精品国产使用方法 | 91精品国产综合久久国产大片| 亚洲国产精品影院| 色哟哟在线观看一区二区三区| 亚洲日本在线视频观看| 93久久精品日日躁夜夜躁欧美| 国产精品国产自产拍高清av王其| 国产成人精品综合在线观看| 麻豆91在线播放免费| 日韩一区二区在线看| 免费成人av在线| 欧美一区二区三区免费| 国产精品一二三区在线| 国产日韩精品一区二区浪潮av| 国产老女人精品毛片久久| 久久久久久免费网| 91香蕉国产在线观看软件| 亚洲黄一区二区三区| 欧美精品乱人伦久久久久久| 午夜天堂影视香蕉久久| 精品国产一区二区亚洲人成毛片 | 亚洲高清久久久| 欧美日韩不卡在线| 亚洲人成精品久久久久久| 91女人视频在线观看| 洋洋av久久久久久久一区| 欧美丰满少妇xxxbbb| 激情深爱一区二区| 综合色天天鬼久久鬼色| 国产91精品一区二区麻豆亚洲| 中文字幕视频一区| 91.com视频| 国产精品一区二区在线观看网站| 亚洲制服丝袜一区| 91精品一区二区三区久久久久久| 国产91精品露脸国语对白| 一区二区在线观看视频在线观看| 在线观看91av| 成人性生交大片免费看在线播放 | 精品一区二区免费看| 久久精品免视看| 色欧美日韩亚洲| 亚州成人在线电影| 国产精品久久久久久久蜜臀| 欧美一区二区三区免费视频| 国产99久久久国产精品免费看| 亚洲国产日韩在线一区模特| 精品国精品自拍自在线| 欧美在线不卡一区| 亚洲综合在线五月| 精品免费日韩av| 欧美日韩精品欧美日韩精品一综合| 久久国产精品区| 亚洲综合另类小说| 欧美岛国在线观看| 欧美日韩亚洲综合在线 |