溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JDBC驅動在java連接mysql的運用

發(fā)布時間:2020-04-24 14:16:25 來源:億速云 閱讀:399 作者:三月 欄目:數(shù)據(jù)庫

本文主要給大家介紹JDBC驅動在java連接mysql的運用,其所涉及的東西,從理論知識來獲悉,有很多書籍、文獻可供大家參考,從現(xiàn)實意義角度出發(fā),億速云累計多年的實踐經(jīng)驗可分享給大家。

簡介:通過java連接mysql需要用到JDBC驅動。JDBC驅動安裝在mysql-client客戶端,mysql-server服務端不需要安裝。

  • 數(shù)據(jù)庫安裝初始化略。測試用到的命令:

1、創(chuàng)建測試用庫,表,字段:

create database score;

use score;

create table score(id nvarchar(10),stu_id nvarchar(10),c_name nvarchar(10),grade nvarchar(10));

insert into score values(15,10,'ENGLISH',14);

2、授權遠程訪問:

mysql> grant ALL PRIVILEGES ON *.* to root@"%" identified by "mysql" ;

mysql>FLUSH PRIVILEGES

JDBC驅動在java連接mysql的運用

 

  • Java安裝略,環(huán)境變量設置:

# vim /etc/profile

export JAVA_HOME=/usr/java/jdk1.7.0_79

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

JDBC驅動在java連接mysql的運用

  • JDBC下載詳見mysql官網(wǎng),安裝即環(huán)境變量設置:

方法一

# vim /etc/profile

export CLASSPATH=.:/devops/mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar

JDBC驅動在java連接mysql的運用

方法二

如果是tomcat等java應用則應參考官方文檔查看如何安裝驅動,比如解壓放在{$TOMCAT}/lib下。

方法三

將其放于JDK安裝目錄下的lib目錄下(也可以是其他位置)

例如我的JDK安裝在/usr/java/jdk1.7.0_71目錄下,那么我將其放在/usr/java/jdk1.7.0_71/lib目錄下

然后修改環(huán)境變量CLASSPATH的值,編輯/etc/profile文件,在CLASSPATH值的末尾加上mysql-connector-java的路徑,并使用冒號 :隔開

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/mysql-connector-java-5.1.18-bin.jar

  • 測試:

編譯工具準備

javac,java。安裝java-devel包即可。

編譯

javac DB.java

運行

java DB

JDBC驅動在java連接mysql的運用  

  • 腳本:

  • ===================================================================================

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class DB {

public static void main(String[] args) {

String url = "jdbc:mysql://10.1.37.24:3306/score";

String user = "root";

String passwd = "123456";

String sql1 = "SELECT * FROM score";

String sql2 = "INSERT INTO score VALUES(25,9205,'ENGLISH',84);";

String sql3 = "UPDATE score SET grade=80 WHERE id=25";

try {

Class.forName("com.mysql.jdbc.Driver");

Connection con = DriverManager.getConnection(url, user, passwd);

System.out.println("數(shù)據(jù)庫連接成功!");

Statement stat = con.createStatement();

ResultSet rs = stat.executeQuery(sql1);

while(rs.next()){

int id = rs.getInt("id");

int stu_id = rs.getInt("stu_id");

String course = rs.getString("c_name");

int grade = rs.getInt("grade");

System.out.println(id + " " + stu_id + " " + course + " " + grade);

}

int i = stat.executeUpdate(sql2);

if(i != 0){

System.out.println("INSERT語句執(zhí)行成功!");

}

int j = stat.executeUpdate(sql3);

if(j != 0){

System.out.println("UPDATE語句執(zhí)行成功!");

}

if(rs != null){

rs.close();

rs = null;

}

if(stat != null){

stat.close();

stat = null;

}

if(con != null){

con.close();

con = null;

}

} catch (ClassNotFoundException e) {

System.out.println("沒有找到數(shù)據(jù)庫驅動!");

} catch (SQLException e) {

System.out.println("連接數(shù)據(jù)庫云服務器失??!");

}

}

}

  • ===================================================================================

JDBC驅動在java連接mysql的運用

JDBC驅動在java連接mysql的運用

 

  • 拓展:JDBC與ODBC的區(qū)別:

JDBC與ODBC都可以實現(xiàn)類似的功能,但JDBC與ODBC的區(qū)別是他們的開發(fā)架構不同,其實現(xiàn)細節(jié)上也有所差異。

談到JDBC與ODBC的區(qū)別,JDBC和ODBC其實都是用來連接數(shù)據(jù)庫的啟動程序。ODBC中文姓名叫做開放數(shù)據(jù)庫互聯(lián),是 Microsoft性能開發(fā)的開放服務框架中有關數(shù)據(jù)庫的一個的組成部份,它建立一組有關的規(guī)則,并幫助了一組對數(shù)據(jù)庫訪問的達標實際運用程序編程接口。簡單的說,ODBC那是實際運用程序與數(shù)據(jù)庫系統(tǒng)停止交互的道具。一個的給予ODBC的實際運用程序對數(shù)據(jù)庫的操作不依賴于的數(shù)據(jù)庫系統(tǒng),不支持與數(shù)據(jù)庫管理系統(tǒng)打交道,所有的數(shù)據(jù)庫操作由對應的數(shù)據(jù)庫系統(tǒng)的ODBC驅動程序來完成。從而沒成績出現(xiàn)以同一的方法來處理所有的數(shù)據(jù)庫。

而JDBC與ODBC類似,也是一個的實際運用程序與數(shù)據(jù)庫停止通信的中間個人公司。只是她們的開發(fā)商不相同而已。JDBC是由Sun個人公司向聯(lián)系型數(shù)據(jù)庫系統(tǒng)廠商幫助JDBC的規(guī)格與需求;然后各大廠商遵循達標規(guī)格設計出符合自己數(shù)據(jù)庫產(chǎn)業(yè)商品的JDBC驅動程序。雖然JDBC與ODBC都沒成績出現(xiàn)類似的功能,但是她們的開發(fā)架構不相同,其出現(xiàn)細節(jié)上也有所差異。為此數(shù)據(jù)庫編程必需要了解這方面的差異,并在打工中根據(jù)實際情況來選取合適的數(shù)據(jù)庫驅動程序。

   JDBCODBC的區(qū)別:JDBC的優(yōu)點。

JDBC實際運用程序接口是JAVA程序語言內針對數(shù)據(jù)存取所涉及的程序開發(fā)接口,其內部是由許多類與接口構成。而ODBC則是由C語言來開發(fā)的。由于兩者開發(fā)平臺的不相同,為此開發(fā)不相同種各自的特點也就傳遞到了這連個數(shù)據(jù)庫啟動程序中。根據(jù)筆者的了解,相對ODBC數(shù)據(jù)庫啟動程序來說,JDBC 有如下幾個優(yōu)點。若筆者概括的不夠全方面的話,歡迎來補全。

1、JDBC要比ODBC簡易理解。學過編程的也許會有一個的直觀的感想,那是JAVA語言要比C語言好學的多。由于JAVA語言的設計思路是面向對象的,跟人的認識思維較量接近,為此較量簡易被人接受,研究起來也相對簡易一點。而C語言則就較量抽象了,跟人的認識規(guī)則有確定的距離。為此她們開發(fā)出來的產(chǎn)業(yè)商品也有類似的特點。在ODBC中,雖然沒成績出現(xiàn)與數(shù)據(jù)庫的交互,但是出現(xiàn)起來較量復雜。如一個的簡單的查詢,也需求分為好幾塊內容;而在 ODBC驅動程序內部再去停止整合,停止一些復雜的操作。這不僅降低了數(shù)據(jù)庫啟動程序的性能,而且也給程序開發(fā)者開發(fā)實際運用程序帶來了確定的負面效果。而JDBC數(shù)據(jù)庫啟動程序在設計的時間就包含了大部份基本數(shù)據(jù)操作功能,為此在編寫一些常規(guī)的數(shù)據(jù)庫操作語句時,如查詢、更新等等,其所需求的源代碼比 ODBC要少的多。故從這方面來說,JDBC數(shù)據(jù)庫啟動程序要比ODBC簡易理解。

2、JDBC數(shù)據(jù)庫驅動程序是面向對象的,完全遵循JAVA語言的優(yōu)良特性。通常情況下,只要有JAVA車功能需設計基礎的用戶都沒成績在最短時間內了解JDBC驅動程序的架構,較量簡易上手,沒成績輕而易舉的開發(fā)出強悍的數(shù)據(jù)庫實際運用程序。而ODBC的話,由于其內部功能復雜,源代碼編寫要求高。為此即使是一個的C語言的高手,仍然需求花費不少的時間去了解那個數(shù)據(jù)庫啟動程序;在編寫源代碼的時間,還離不開有關的參考書本。

3JDBC的移植性要比ODBC要好。通常情況下,安裝完ODBC驅動程序之后,還需求經(jīng)過確定的配置才能夠應用。而不相同的配置在不相同數(shù)據(jù)庫服務器之間不能夠通用。也那是說,裝一次需求配置一次。但是JDBC數(shù)據(jù)庫驅動程序則不相同。假如采用JDBC數(shù)據(jù)庫驅動程序的話,則知需求選取適當?shù)?JDBC數(shù)據(jù)庫驅動程序,就不需求停止額外的配置。在安裝過程中,JDBC數(shù)據(jù)庫驅動程序會自己完成有關的配置。為此JDBC的移植性要比ODBC要好。

總之JDBCODBC都是數(shù)據(jù)庫的啟動程序,它們的本質是相同的,都是為了處理SQL語句而設計的。而且JDBC在設計的時間,其也是在ODBC 的基礎上停止設計的,并保留了ODBC數(shù)據(jù)庫驅動程序的部份功能?;蛘哒f,咱們沒成績把JDBC看作是ODBC的另一個的高級版本也未嘗不可。JDBC主要在操作上、友好性上做了確定的改進。

JDBCODBC的區(qū)別:什么時間采用JDBC?

雖然說JDBC數(shù)據(jù)庫啟動程序比ODBC來說具有不少的優(yōu)點,但是也并不是說在所有的情況下采用JDBC數(shù)據(jù)庫啟動程序都能夠起到不錯的效果。數(shù)據(jù)庫編程還需求根據(jù)企業(yè)的實際實際運用環(huán)境來停止選取。通常情況下,假如符合下面幾種情況的任何一種,筆者意見采用JDBC數(shù)據(jù)庫驅動程序。

一是采用Oracle個人公司的Oracle JDeveloper 10G來開發(fā)實際運用程序。JDeveloper 10G是Oracle個人公司幫助的一個的可視化的開發(fā)環(huán)境。沒成績幫助數(shù)據(jù)庫編程與開發(fā)方便的完成一些復雜的功能。如數(shù)據(jù)庫開發(fā)沒成績借那個道具來設計 WEB實際運用程序的網(wǎng)頁運行程序;如沒成績用來開發(fā)業(yè)務服務層組件;如沒成績在JSP與JClient實際運用程序內出現(xiàn)數(shù)據(jù)綁定功能等等。特別是在利用那個道具開發(fā)業(yè)務服務層組件的時間,沒成績直接瀏覽與存取業(yè)務組件所對應的數(shù)據(jù)。數(shù)據(jù)庫開發(fā)不用等到實際運用程序撰寫好后才測試數(shù)據(jù)庫的存取功能。顯然那個特性讓數(shù)據(jù)庫開發(fā)在開發(fā)數(shù)據(jù)庫實際運用程序的時間格外的便利。而為了配合那個開發(fā)道具,Oracle個人公司專門開發(fā)了對應的JDBC驅動程序。為此假如數(shù)據(jù)庫開發(fā)采用JDeveloper開發(fā)道具的話,那么采用JDBC要比采用ODBC的兼容性要好。所以假如采用了這種開發(fā)道具的話,最好能夠采用 JDBC數(shù)據(jù)庫啟動程序。

二是假如實際運用程序采用的是JAVA開發(fā)平臺的話,那么最好應用JDBC數(shù)據(jù)庫啟動程序。其實JDeveloper采用的也是JAVA開發(fā)平臺。這主要是由于假如JAVA程序直接調用ODBC的C語言實際運用程序接口時,較量簡易產(chǎn)生安全方面的難點。如Java語言是不采用指針的(由于指針的處理效率較量慢),而ODBC所采用的C語言卻應用了大量的指針。為此假如應用JAVA語言平臺來開發(fā)數(shù)據(jù)庫實際運用程序,若采用ODBC數(shù)據(jù)庫驅動程序的話,就不那么合適了。另外由于JDBC也是JAVA語言開發(fā)的,所以其兼容性也會好許多。為此筆者意見,假如數(shù)據(jù)庫開發(fā)采用的是JAVA語言開發(fā)平臺的話,那么最好采用JDBC驅動程序,而不是ODBC驅動程序。

在更多相關的情況下,數(shù)據(jù)庫編程與開發(fā)沒成績根據(jù)自己的習慣來選取合適的數(shù)據(jù)庫驅動程序。

JDBCODBC的區(qū)別:能否從ODBC順利過渡到JDBC?

也許數(shù)據(jù)庫編程以前采用的是ODBC驅動程序,而假如數(shù)據(jù)庫編程目前需求采用JDBC驅動程序,那么能否出現(xiàn)順利過渡呢?正確回答是肯定的。在 JDBC驅動程序中有一類叫作JDBC-ODBC橋接啟動程序。這種類別的JDBC數(shù)據(jù)庫驅動程序其底層是經(jīng)過ODBC驅動程序來連接數(shù)據(jù)庫的。假如原先的實際運用程序是基于ODBC數(shù)據(jù)庫驅動程序的,或者數(shù)據(jù)庫沒有幫助對應的JDBC驅動程序,則數(shù)據(jù)庫編程沒成績利用JDBC-ODBC橋接驅動程序來出現(xiàn)。也那是說,橋接驅動程序沒成績利用現(xiàn)有的ODBC驅動程序來存取聯(lián)系型數(shù)據(jù)庫。為此者不僅沒成績保留先前的開發(fā)架構(經(jīng)過ODBC來存取數(shù)據(jù)),還沒成績立即應用JAVA作為新的開發(fā)環(huán)境,從而出現(xiàn)ODBC數(shù)據(jù)庫驅動程序到JDBC的順利轉型。

不過在采用這種橋接驅動程序的時間,需求留意幾個難點。一是那個橋接驅動程序仍然需求用到ODBC數(shù)據(jù)庫驅動程序。由于橋接驅動程序直接聯(lián)系的對象是ODBC驅動程序,然后再經(jīng)過ODBC驅動程序去訪問數(shù)據(jù)庫。為此在客戶端必需先安裝并配置好ODBC驅動程序。假如采用的是三層式的開發(fā)框架,也需求安裝ODBC驅動程序。其次,在這種模式下,實際運用程序先調用JDBC,然后再經(jīng)過JDBC調用ODBC,最后再跟數(shù)據(jù)庫停止通信。顯然其中間多了幾個環(huán)節(jié)。由于其中間環(huán)節(jié)較量多,但數(shù)據(jù)訪問出現(xiàn)難點的時間,就不怎樣好查難點。這就好像一道水管,假如中間的接口多了的話,則除了漏水的幾率就較量高。假如真的除了漏水的話,則查詢漏水點的時間也會較量困難。為此筆者以為,采用橋接類別的JDBC驅動程序只是權宜之計。在適當?shù)臅r間,數(shù)據(jù)庫開發(fā)還是需求調整原先的開發(fā)架構,全部都轉到JDBC驅動程序上來。橋接程序只是為數(shù)據(jù)庫開發(fā)爭取確定的時間。雖然那個轉型過程中的陣痛是較量痛的,但確是不可避免的。長痛不如短痛,筆者意見數(shù)據(jù)庫開發(fā)還是及早停止過渡為好。并在估計的情況下,把以前的開發(fā)架構也停止調整,以采用真正意義上的JDBC驅動程序。

看了以上JDBC驅動在java連接mysql的運用介紹,希望能給大家在實際運用中帶來一定的幫助。本文由于篇幅有限,難免會有不足和需要補充的地方,大家可以繼續(xù)關注億速云行業(yè)資訊板塊,會定期給大家更新行業(yè)新聞和知識,如有需要更加專業(yè)的解答,可在官網(wǎng)聯(lián)系我們的24小時售前售后,隨時幫您解答問題的。


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI