1.抽象:抽象就是忽略一個(gè)主題中與當(dāng)前目標(biāo)無(wú)關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算了解全部問(wèn)題,而只是選擇其中的一部分,暫時(shí)不用部分細(xì)節(jié)。抽象包括兩個(gè)方面,一是過(guò)程抽象,二是數(shù)據(jù)抽象。2.繼承:繼承是一種聯(lián)結(jié)類(lèi)的層次模型,并且允許和鼓勵(lì)類(lèi)的重用,它提供了一種明確表述共性的方法。對(duì)象的一個(gè)新類(lèi)可以從現(xiàn)有的類(lèi)中派生,這個(gè)過(guò)程稱(chēng)為類(lèi)繼承。新類(lèi)繼承了原始類(lèi)的特性,新類(lèi)稱(chēng)為原始類(lèi)的派生類(lèi)(子類(lèi)),而原始類(lèi)稱(chēng)為新類(lèi)的基類(lèi)(父類(lèi))。派生類(lèi)可以從它的基類(lèi)那里繼承方法和實(shí)例變量,并且類(lèi)可以修改或增加新的方法使之更適合特殊的需要。3.封裝:封裝是把過(guò)程和數(shù)據(jù)包圍起來(lái),對(duì)數(shù)據(jù)的訪問(wèn)只能通過(guò)已定義的界面。面向?qū)ο笥?jì)算始于這個(gè)基本概念,即現(xiàn)實(shí)世界可以被描繪成一系列完全自治、封裝的對(duì)象,這些對(duì)象通過(guò)一個(gè)受保護(hù)的接口訪問(wèn)其他對(duì)象。4.多態(tài)性:多態(tài)性是指允許不同類(lèi)的對(duì)象對(duì)同一消息作出響應(yīng)。多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)性。多態(tài)性語(yǔ)言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢(shì),很好的解決了應(yīng)用程序函數(shù)同名問(wèn)題。以上這些使得JAVA代碼容易理解和編寫(xiě),容易維護(hù)和拓展。
創(chuàng)新互聯(lián)公司專(zhuān)業(yè)為企業(yè)提供漢陰網(wǎng)站建設(shè)、漢陰做網(wǎng)站、漢陰網(wǎng)站設(shè)計(jì)、漢陰網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、漢陰企業(yè)網(wǎng)站模板建站服務(wù),10多年漢陰做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
控制面板 -》 性能和維護(hù) --》管理工具--》數(shù)據(jù)源-》系統(tǒng)DSN 點(diǎn)擊添加 選擇 SqlServer 點(diǎn)擊完成。你需要在windows上配置一個(gè)數(shù)據(jù)源。
如果照你這樣學(xué)習(xí)下去。你將變成一個(gè)廢物。
這么過(guò)時(shí)的東西非得要搞清。
什么東西不必研究的那么透徹。
用JAVA連接數(shù)據(jù)庫(kù)主要有兩種方式,一是用JDBC-ODBC橋來(lái)連接,二是用相關(guān)廠商提供的相應(yīng)驅(qū)動(dòng)程序來(lái)連接,首先談?wù)劦谝环N連接。 \x0d\x0a\x0d\x0aJDBC-ODBC橋接器是用JdbcOdbc.Class和一個(gè)用于訪問(wèn)ODBC驅(qū)動(dòng)程序的本地庫(kù)實(shí)現(xiàn)的。對(duì)于WINDOWS平臺(tái),該本地庫(kù)是一個(gè)動(dòng)態(tài)連接庫(kù)DLL(JDBCODBC.DLL)。 \x0d\x0a\x0d\x0a由于JDBC在設(shè)計(jì)上與ODBC很接近。在內(nèi)部,這個(gè)驅(qū)動(dòng)程序把JDBC的方法映射到ODBC調(diào)用上,這樣,JDBC就可以和任何可用的ODBC驅(qū)動(dòng)程序進(jìn)行交互了。這種橋接器的優(yōu)點(diǎn)是,它使JDBC目前有能力訪問(wèn)幾乎所有的數(shù)據(jù)庫(kù)。通行方式如圖所示: \x0d\x0a\x0d\x0a應(yīng)用程序---JDBC API---JDBC-ODBC---ODBC API---ODBC層---數(shù)據(jù)源 \x0d\x0a\x0d\x0a具體操作方法為: \x0d\x0a\x0d\x0a首先打開(kāi)控制面板的管理工具,打開(kāi)數(shù)據(jù)源(ODBC),在用戶DSN里面添加數(shù)據(jù)源(即你要連接的數(shù)據(jù)庫(kù)的名字),在這里假定連接SQL SERVER 2000的GoodsSupply數(shù)據(jù)庫(kù)。名稱(chēng)填寫(xiě)你要連接的數(shù)據(jù)庫(kù)的名稱(chēng)(GoodsSupply),然后逐步設(shè)置,如果選用了使用SQL-SERVER密碼認(rèn)證的話,就要輸入相應(yīng)的用戶名及密碼連接到數(shù)據(jù)庫(kù)。一路下一步設(shè)置完成。 \x0d\x0a\x0d\x0a在JAVA里面編寫(xiě)程序進(jìn)行測(cè)試,在這里我的程序是讓用戶輸入任意的表名與與列名,把該列的所有數(shù)據(jù)輸出。源代碼如下: \x0d\x0a\x0d\x0aimport java.io.BufferedReader; \x0d\x0aimport java.io.InputStreamReader; \x0d\x0aimport java.sql.*; \x0d\x0a\x0d\x0apublic class ODBCBridge { \x0d\x0a\x0d\x0apublic static void main(String[] args) { \x0d\x0aString url="jdbc:odbc:GoodsSupply"; \x0d\x0aStatement sm=null; \x0d\x0aString command=null; \x0d\x0aResultSet rs=null; \x0d\x0aString tableName=null; \x0d\x0aString cName=null; \x0d\x0aString result=null; \x0d\x0aBufferedReader input=new BufferedReader(new InputStreamReader(System.in)); \x0d\x0atry { \x0d\x0atry { \x0d\x0aClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加載驅(qū)動(dòng) \x0d\x0a}catch(ClassNotFoundException e){ \x0d\x0aSystem.out.println("Can not load Jdbc-Odbc Bridge Driver"); \x0d\x0aSystem.err.print("ClassNotFoundException:"); \x0d\x0aSystem.err.println(e.getMessage()); \x0d\x0a} \x0d\x0aConnection con=DriverManager.getConnection(url,"USER","PASSWORD"); //使用SQL-SERVER2000認(rèn)證 \x0d\x0aDatabaseMetaData dmd=con.getMetaData(); //DMD為連接的相應(yīng)情況 \x0d\x0aSystem.out.println("連接的數(shù)據(jù)庫(kù):"+dmd.getURL()); \x0d\x0aSystem.out.println("驅(qū)動(dòng)程序:"+dmd.getDriverName()); \x0d\x0asm=con.createStatement(); \x0d\x0aSystem.out.println("輸入表名"); \x0d\x0atableName=input.readLine(); \x0d\x0awhile(true) { \x0d\x0aSystem.out.println("輸入列名(為空時(shí)程序結(jié)束):"); \x0d\x0acName=input.readLine(); \x0d\x0aif(cName.equalsIgnoreCase("")) \x0d\x0abreak; \x0d\x0acommand="select "+cName+" from "+tableName; \x0d\x0ars=sm.executeQuery(command); //執(zhí)行查詢(xún) \x0d\x0aif(!rs.next()) \x0d\x0aSystem.out.println("表名或列名輸入有誤"); \x0d\x0aelse { \x0d\x0aSystem.out.println("查詢(xún)結(jié)果為:"); \x0d\x0ado \x0d\x0a{ \x0d\x0aresult=rs.getString(cName); \x0d\x0a//數(shù)據(jù)庫(kù)語(yǔ)言設(shè)置為中文,不用轉(zhuǎn)換編碼 \x0d\x0a//result=new String(result.getBytes("ISO-8859-1"),"GB2312"); \x0d\x0aSystem.out.println(result); \x0d\x0a}while(rs.next()); \x0d\x0a} \x0d\x0a} \x0d\x0a}catch(SQLException ex) { \x0d\x0aSystem.out.println("SQLException:"); \x0d\x0awhile(ex!=null) { \x0d\x0aSystem.out.println("Message:"+ex.getMessage()); \x0d\x0aex=ex.getNextException(); \x0d\x0a} \x0d\x0a}catch(Exception e) { \x0d\x0aSystem.out.println("IOException"); \x0d\x0a} \x0d\x0a} \x0d\x0a}
Java中的bridge method又叫橋接方法
橋接方法是 JDK 1.5 引入泛型后,為了使Java的泛型方法生成的字節(jié)碼和 1.5 版本前的字節(jié)碼相兼容,由編譯器自動(dòng)生成的方法。
我們可以通過(guò)Method.isBridge()方法來(lái)判斷一個(gè)方法是否是橋接方法,在字節(jié)碼中橋接方法會(huì)被標(biāo)記為ACC_BRIDGE和ACC_SYNTHETIC,其中ACC_BRIDGE用于說(shuō)明這個(gè)方法是由編譯生成的橋接方法,ACC_SYNTHETIC說(shuō)明這個(gè)方法是由編譯器生成,并且不會(huì)在源代碼中出現(xiàn)。