Java连接数据库(1)
環(huán)境:netbeans
Java訪問數(shù)據(jù)庫有兩種方法,第一種是JDBC-ODBC橋驅(qū)動(dòng)程序,第二種是使用專用的數(shù)據(jù)庫驅(qū)動(dòng)程序。
這兩種方法是這個(gè)意思:ODBC是微軟開發(fā)出來的驅(qū)動(dòng)程序,這個(gè)驅(qū)動(dòng)程序可以用于連接絕大多數(shù)數(shù)據(jù)庫比如mysql, postgresql,access,sql server,但是這個(gè)驅(qū)動(dòng)程序是用C++寫的,在java中不能直接使用,這樣java開發(fā)者就弄了個(gè)JDBC-ODBC橋驅(qū)動(dòng)程序,在java中通過這個(gè)JDBC-ODBC橋驅(qū)動(dòng)程序來間接使用ODBC,從而可以連接絕大多數(shù)數(shù)據(jù)庫。這其實(shí)是一種偷懶的做法。由于連接數(shù)據(jù)庫要經(jīng)過很多環(huán)節(jié),所以效率可能不高,Sun公司不推薦這種方法。但是使用起來很方便,因?yàn)镴DBC-ODBC橋驅(qū)動(dòng)程序已經(jīng)安裝在了JAVA開發(fā)環(huán)境中,第二種方法就需要另外去數(shù)據(jù)庫的官網(wǎng)下載相應(yīng)的驅(qū)動(dòng)程序。
專用的數(shù)據(jù)庫驅(qū)動(dòng)程序,就麻煩一點(diǎn),但是更直接。每個(gè)數(shù)據(jù)庫廠商需要單獨(dú)開發(fā)一個(gè)數(shù)據(jù)庫驅(qū)動(dòng)程序,當(dāng)然使用Java開發(fā)。然后在Java中使用這些驅(qū)動(dòng)程序連接數(shù)據(jù)庫。這樣就大大減少了中間環(huán)節(jié),效率就提高了。下面分別使用這兩種方法來連接mysql和postgresql數(shù)據(jù)庫。使用Java訪問數(shù)據(jù)庫,一般有這5個(gè)步驟(1)加載驅(qū)動(dòng)程序。(2)建立連接對(duì)象。(3)創(chuàng)建語句對(duì)象。(4)獲得sql執(zhí)行結(jié)果的數(shù)據(jù)集。(5)關(guān)閉結(jié)果數(shù)據(jù)集,關(guān)閉語句對(duì)象,關(guān)閉連接。
(一)使用JDBC-ODBC訪問mysql
我在mysql中創(chuàng)建了一個(gè)courseselection的數(shù)據(jù)庫,數(shù)據(jù)庫中有一個(gè)courses表。由于用到了ODBC驅(qū)動(dòng)程序,所以首先要注冊(cè)一個(gè)mysql的數(shù)據(jù)源。方法是:【控制面板】-【管理工具】-【數(shù)據(jù)源】-【系統(tǒng)DSN】標(biāo)簽卡,點(diǎn)擊添加,出現(xiàn)【創(chuàng)建數(shù)據(jù)源】對(duì)話框,選擇其中的mysql odbc driver
出現(xiàn)配置界面,如下填寫(其中密碼默認(rèn)為123456)
這樣就注冊(cè)了一個(gè)數(shù)據(jù)源。其中連接的是courseselection數(shù)據(jù)庫。
其余代碼如下:
package try1;import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement;public class MySqlOdbcDemo {public static void main(String[] args) throws Exception{//加載JDBC-ODBC橋驅(qū)動(dòng)程序Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//設(shè)置數(shù)據(jù)源, myData是注冊(cè)的數(shù)據(jù)源,連接的是courseselection數(shù)據(jù)庫String dburl="jdbc:odbc:myData";//getConnection(數(shù)據(jù)源, 用戶名, 密碼)Connection conn = DriverManager.getConnection(dburl, "root", "123456");String sql = "Select * from courses";Statement stmt = conn.createStatement();ResultSet rst = stmt.executeQuery(sql);while (rst.next()){//由于數(shù)據(jù)庫與java中的默認(rèn)編碼不一致,所以不能直接讀字符串,先讀字節(jié),然后轉(zhuǎn)換String st = new String(rst.getBytes(2), "UTF-8");System.out.println(rst.getString(1) + ": " + st);}rst.close();stmt.close();conn.close();} } 結(jié)果如下:
run: a0101: 高等數(shù)學(xué) a0102: 線性代數(shù) b0011: 數(shù)據(jù)結(jié)構(gòu) b0101: 數(shù)字電路 b0111: 數(shù)據(jù)庫 b0201: 數(shù)字電路 成功生成(總時(shí)間:0 秒)
總結(jié)
以上是生活随笔為你收集整理的Java连接数据库(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab中的square函数
- 下一篇: Java连接数据库(2)