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