猶記當(dāng)年為了使用java程序連接mysql數(shù)據(jù)庫話費(fèi)一天時間,最后發(fā)現(xiàn)是沒有導(dǎo)入外包,如今看來真的發(fā)現(xiàn)自己那時有點(diǎn)二,也怪我使用的教科書上沒有說明這點(diǎn)(強(qiáng)行甩鍋,哈哈)。今天分享出來,,希望后者不因為這點(diǎn)小問題而大費(fèi)周章。
首先說下數(shù)據(jù)庫,數(shù)據(jù)庫在操作系統(tǒng)看來其實就是一個服務(wù),mysql在windows服務(wù)中叫mysql服務(wù),sqlserver叫sqlserver服務(wù)(我們在任務(wù)管理器中可以在服務(wù)一項中找到我們裝到自己機(jī)器上的數(shù)據(jù)庫服務(wù)),我們使用的toad for mysql等叫數(shù)據(jù)庫管理工具,他們的完成的功能其實就是通過我們的一些點(diǎn)擊創(chuàng)建數(shù)據(jù)庫等操作向數(shù)據(jù)庫服務(wù)發(fā)送sql語句從而完成對數(shù)據(jù)庫的創(chuàng)建庫等操作,所以從這個方面看來其實我們自己也可以寫一個簡單的數(shù)據(jù)庫管理工具。
不同的數(shù)據(jù)庫和java程序連接時使用的驅(qū)動不一樣,這兒驅(qū)動不是由java所屬公司提供,而是有java公司提供連接接口,各個數(shù)據(jù)庫廠商根據(jù)自己的數(shù)據(jù)庫特性來寫所需的驅(qū)動程序(如com.mysql.jdbc.Driver是mysql連接時用的驅(qū)動由Oracle公司提供,mysql現(xiàn)在屬于oracle了),而java所需完成的操作就是使用連接接口來完成驅(qū)動程序的加載以及后期的交互任務(wù)。所以要想使用java程序連接數(shù)據(jù)庫第一件事就是去相應(yīng)數(shù)據(jù)庫公司官網(wǎng)下載相應(yīng)的jar包(這個很重要,當(dāng)時我就是因為這個搗鼓了一天)。mysql和sqlserver要用到的jar包我已上傳到我的GitHub上了,可以下載(https://github.com/huangxinyuan650/ConnectDatabase/tree/master/extendpackage)
在有了相應(yīng)的jar包之后剩下的就是比較有序的操作了,除了加載的驅(qū)動不一樣剩下的都與數(shù)據(jù)庫的種類無關(guān)(當(dāng)然在涉及到讀取的細(xì)節(jié)上會有稍微的區(qū)別在后期會講到),之后的操作就是
注意在連接前需要把連接數(shù)據(jù)庫的 jar包提前導(dǎo)入到工程下或者直接放到j(luò)dk的lib下。
1.使用調(diào)用Class類加載驅(qū)動(Class.forName(驅(qū)動類名路徑);),
2.通過DriverManager接口獲取數(shù)據(jù)庫連接對象(Connection conn=DriverManager.getConnection(連接字符串,用戶名,密碼);),
3.至此已經(jīng)建立起了與數(shù)據(jù)庫的連接,接下來就是獲取對數(shù)據(jù)庫操作需要使用到的對象Statement(Statement state = conn.createStatement();)
4.通過statement對象完成對數(shù)據(jù)庫的操作(Query和Update操作,數(shù)據(jù)庫的增刪改都是update,查為query),當(dāng)然在完成查詢操作的時候是需要ResultSet對象來接收查詢的結(jié)果的(ResultSet re=conn.state.executeQuery(cmd);)
完整的連接類我們可以自己歸納出來,方便以后直接調(diào)用(連接mysql數(shù)據(jù)庫完整代碼)
package hxy;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class ConnectMySQL {
Connection conn = null;
Statement state = null;
public ConnectMySQL(){
try{ ///////鏈接數(shù)據(jù)庫
Class.forName("com.mysql.jdbc.Driver"); //////加載數(shù)據(jù)庫驅(qū)動
}
catch(ClassNotFoundException e){
System.out.println(e);
}
try{
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/databasedata", "root", "huang650");
//獲取數(shù)據(jù)庫連接對象,其中g(shù)etConnection方法中第一個參數(shù)為連接字符串里面包含數(shù)據(jù)庫url和端口號,第二個參數(shù)為數(shù)據(jù)庫用戶名,第三個參數(shù)為數(shù)據(jù)庫密碼
System.out.println("You has connected to Mysql!!!");
state=conn.createStatement(); //////////獲取對數(shù)據(jù)庫的操作對象Statement
}
catch(SQLException e){
System.out.print(e);
}
}
void close(){
try {
conn.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
在獲取到statement對象后就是通過statement對象完成對數(shù)據(jù)庫的操作,當(dāng)然在使用完后需要關(guān)閉與數(shù)據(jù)庫的連接。
在連接sqlserver數(shù)據(jù)庫的時候只需要把驅(qū)動的路徑改為com.microsoft.sqlserver.jdbc.SQLServerDriver,然后端口號改為1433,連接字符串前面改成jdbc:sqlserver即可。
Oracle數(shù)據(jù)庫的話好像是有兩種連接方式,但原理都是差不多的,有需求的可以自行百度解決,至于詳細(xì)的對數(shù)據(jù)庫的操作可以直接寫傳參數(shù)到數(shù)據(jù)庫操作對象的方法中,在之后的隨筆中還會詳細(xì)介紹。歡迎批評指正。
以上內(nèi)容是關(guān)于Java連接數(shù)據(jù)庫(mysql,sqlserver)的介紹,要想了解更多相關(guān)信息、教育培訓(xùn)內(nèi)容,請隨時關(guān)注唯學(xué)網(wǎng),小編會第一時間為大家更新、跟進(jìn)最新信息。