public static void main(String[] args) {
Connection conn = null;
Statement state = null;
ResultSet set = null;
try {
//註冊數據庫驅動
DriverManager.registerDriver(new Driver());
//獲取數據庫連接
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "");
//獲取傳輸器對象
state= conn.createStatement();
//利用傳輸器對象執行sql語句
set=state.executeQuery("select * from emp");
while(set.next()){
System.out.println(set.getString("name"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
set.close();
state.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
JDBC與MySql:手把手教你JDBC入門
之前寫了一堆MySql數據庫的操作方法,都是在cmd命令下操作的。那麼我們在cmd窗口下增刪改查對於我們實際開發也沒什麼卵用~因爲我們寫出來的程序總不可能需要保存數據的時候就打開cmd窗口插入幾條數據,需要讀取數據的時候就在cmd窗口查詢一下,然後把結果複製到我們所寫的程序中吧~顯然數據庫不是這麼用的。
正確的使用方法是直接用程序跟數據庫溝通,而筆者本身是android開發的,所以這裏就用java演示,如何用java跟mysql數據庫連接!
而java跟數據庫連接我們會用到java的一種技術---JDBC:
JDBC(Java Data Base Connectivity,java數據庫連接)是一種用於執行SQL語句的Java API,可以爲多種關係數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。JDBC提供了一種基準,據此可以構建更高級的工具和接口,使數據庫開發人員能夠編寫數據庫應用程序。
MySql的開發人員根據這種基準開發出connectors,也叫作數據庫驅動。
如下圖,我們是寫應用程序的,而我們需要使用數據庫就要直接接觸這種數據庫的驅動,要熟悉學習這種數據庫的驅動。
而數據庫那麼多種,常用的也不少~對於我們開發者來說學習成本太大!
那麼有了jdbc這種基準,或者說規範。如何數據庫如何與java程序溝通不再是我們思考的問題,如何與java程序溝通這個問題就轉移到數據庫開發商,他們針對java寫好驅動供我們下載放到程序裏就好。而我們要做的就是掌握jdbc。就這樣,掌握jdbc+數據庫對應的驅動=掌握任何支持jdbc數據庫的連接。
如下圖:
JDBC驅動:
上文所提到的驅動就是一個jar包,下載地址一般會在該數據庫的官網,比如我們這裏所說的MySql,那麼mysql的驅動就在mysql的官網可以下載到。
爲了方便大家,在本文末尾也會提供一個mysql的驅動。大家可以下載使用。
JDBC的使用:
筆者還是使用上篇博文演示過的數據庫mydb中的emp表演示,其中的數據以及表的結構如下所示:
+----+------+---------+--------+
| id | name | dept_id | salary |
+----+------+---------+--------+
| 1 | 曹操 | 1 | 2000 |
| 2 | 荀彧 | 2 | 2000 |
| 4 | 郭嘉 | 4 | 2000 |
| 5 | 荀攸 | NULL | 2000 |
+----+------+---------+--------+
建議:如果讀者的mysql還沒有數據,請先創建一個數據庫,然後創建一個表,然後往裏面插入若干條數據作爲演示
如有需要可查看本博客的前幾篇文章,創建數據庫,創建表,插入數據,查詢數據等都有記錄的;
接下來開始jdbc的使用介紹:
首先創建一個java項目,然後創建一個帶有main方法的類。
下載mysql的jdbc驅動jar包(mysql官網可以下載,本文末尾也有提供);
放到項目的lib文件夾裏面,用myeclipse創建的項目一般都有lib文件夾,而使用eclipse創建的java項目可能沒有lib文件夾,沒有的話我們自己創建一個文件夾命名爲lib就可以了。然後把下載到的驅動jar包放到lib文件夾裏就可以了。
當然,就這麼放進去還沒可以,還有右擊該jar包----Build Path----Add to Build Path;
接下來就要在main方法裏面操作了:
其中 conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "");
接受三個參數,第一個參數爲數據庫鏈接地址,開頭的"jdbc:mysql://"是固定的而後面的localhost:3306是數據庫所在的地址以及端口,由於筆者的mysql數據庫就在本機所以寫上localhost,而mysql的端口默認就是3306.後面的mydb是數據庫的名稱。
第二個參數就是用戶名,默認也是root
第三個參數就是密碼,筆者的數據庫沒有密碼,所以直接寫個雙引號上去。
set=state.executeQuery("select * from emp");
可以看到executeQuery接受的參數是一句sql語句,筆者把查詢emp全表的數據寫上去,所查詢的結果會保存到ResultSet 裏面。
而在後面可以看到使用一個while循環把說查詢的結果遍歷出來了。
要說一下ResultSet 的遍歷:
可以這麼理解,ResultSet 有一根指針,一開始是指着表頭,每調用一次ResultSet .next就會把這個指針往下移動一行,並且判斷有沒有數據,如果這一行有數據的話則返回true,否則返回false。
然後讀者可以發現ResultSet 有很多方法,這裏先介紹ResultSet .getString(”“);裏面接受一個字段名,就是獲取當前ResultSet 所指的行所對應的字段的數據。
最後需要關閉ResultSet ,Statement ,Connection 。及時釋放資源。
我們試一下運行,可以看到運行結果是這樣的:
而我們再看一下數據庫裏面的數據是怎樣的:
+----+------+---------+--------+
| id | name | dept_id | salary |
+----+------+---------+--------+
| 1 | 曹操 | 1 | 2000 |
| 2 | 荀彧 | 2 | 2000 |
| 4 | 郭嘉 | 4 | 2000 |
| 5 | 荀攸 | NULL | 2000 |
+----+------+---------+--------+
正是正確地遍歷出數據庫mydb裏emp表的name字段的數據。
本文到此結束,下篇將爲大家介紹更多與jdbc相關的知識。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.