通過java連接mysql總結

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

  • 數據庫安裝初始化略。測試用到的命令:

1、創建測試用庫,表,字段:

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

1

 

  • Java安裝略,環境變量設置:

# 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

2

  • JDBC下載詳見mysql官網,安裝即環境變量設置:

方法一

# vim /etc/profile

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

3

方法二

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

方法三

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

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

然後修改環境變量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

4  

  • 腳本:

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

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("數據庫連接成功!");

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語句執行成功!");

}

int j = stat.executeUpdate(sql3);

if(j != 0){

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

}

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("沒有找到數據庫驅動!");

} catch (SQLException e) {

System.out.println("連接數據庫服務器失敗!");

}

}

}

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

5

6

 

  • 拓展:JDBC與ODBC的區別:

JDBC與ODBC都可以實現類似的功能,但JDBC與ODBC的區別是他們的開發架構不同,其實現細節上也有所差異。

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

而JDBC與ODBC類似,也是一個的實際運用程序與數據庫停止通信的中間個人公司。只是她們的開發商不相同而已。JDBC是由Sun個人公司向聯繫型數據庫系統廠商幫助JDBC的規格與需求;然後各大廠商遵循達標規格設計出符合自己數據庫產業商品的JDBC驅動程序。雖然JDBC與ODBC都沒成績出現類似的功能,但是她們的開發架構不相同,其出現細節上也有所差異。爲此數據庫編程必需要了解這方面的差異,並在打工中根據實際情況來選取合適的數據庫驅動程序。

   JDBCODBC的區別:JDBC的優點。

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

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

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

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

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

JDBCODBC的區別:什麼時間採用JDBC?

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

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

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

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

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

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

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章