Java-JDBC開發(fā)-連接數(shù)據(jù)庫

一、JDBC概述

JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java API,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。是Java訪問數(shù)據(jù)庫的標準規(guī)范

JDBC提供了一種基準,據(jù)此可以構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠編寫數(shù)據(jù)庫應(yīng)用程序。

JDBC需要連接驅(qū)動,驅(qū)動是兩個設(shè)備要進行通信,滿足一定通信數(shù)據(jù)格式,數(shù)據(jù)格式由設(shè)備提供商規(guī)定,設(shè)備提供商為設(shè)備提供驅(qū)動軟件,通過軟件可以與該設(shè)備進行通信。

Java提供訪問數(shù)據(jù)庫規(guī)范稱為JDBC,而生產(chǎn)廠商提供規(guī)范的實現(xiàn)類稱為驅(qū)動。JDBC是接口,驅(qū)動是接口的實現(xiàn),沒有驅(qū)動將無法完成數(shù)據(jù)庫連接,從而不能操作數(shù)據(jù)庫!每個數(shù)據(jù)庫廠商都需要提供自己的驅(qū)動,用來連接自己公司的數(shù)據(jù)庫,也就是說驅(qū)動一般都由數(shù)據(jù)庫生成廠商提供。

二、JDBC 開發(fā)

JDBC 操作數(shù)據(jù)庫的步驟:

注冊驅(qū)動:告知 JVM 使用的是哪一個數(shù)據(jù)庫的驅(qū)動

獲得連接:使用 JDBC 中的類,完成對MySQL數(shù)據(jù)庫的連接

獲得語句執(zhí)行平臺:通過連接對象獲取對 SQL 語句的執(zhí)行者對象

執(zhí)行SQL語句:使用執(zhí)行者對象,向數(shù)據(jù)庫執(zhí)行 SQL 語句,獲取到數(shù)據(jù)庫的執(zhí)行后的結(jié)果

處理結(jié)果

釋放資源

1、導入驅(qū)動jar包

網(wǎng)盤獲取 mysql-connector-java-5.1.37-bin.jar 包,連接:https://pan.baidu.com/s/1eoxPeiNGrDXqHydr2X3Exg?? 提取碼:kned

下載解壓后如下:


mysql-connector-java-5.1.37-bin.jar 就是我們要導入的包,導入方法和導入 commons-io jar 包方法是一樣的,具體可以參照 commons-io jar 包導入方法 https://blog.csdn.net/One_L_Star/article/details/95625040#2%E3%80%81%E5%AF%BC%E5%85%A5%20commons-io%20jar%20%E5%8C%85

2、注冊數(shù)據(jù)庫驅(qū)動程序

在開發(fā)中通常使用反射的方法注冊驅(qū)動:Class.forName() 加載一個使用字符串描述的驅(qū)動類,該類的靜態(tài)代碼將自動執(zhí)行,Driver 類會“主動”將自己進行注冊

使用反射技術(shù):Class.forName("com.mysql.jdbc.Driver");

public static void main(String[] args)throws ClassNotFoundException,SQLException{

//注冊驅(qū)動 反射技術(shù),將驅(qū)動類加入到內(nèi)容

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

}

3、獲取數(shù)據(jù)庫和SQL的連接對象

static Connection getConnection(String url, String user, String password):

返回值:Connection接口的實現(xiàn)類,在mysql驅(qū)動程序

url:數(shù)據(jù)庫地址? jdbc:mysql://連接主機IP:端口號//數(shù)據(jù)庫名字

user:用戶名

password:密碼

Statement createStatement() :獲取Statement對象,將SQL語句發(fā)送到數(shù)據(jù)庫

public static void main(String[] args) throws ClassNotFoundException, SQLException {

? ? //1.注冊驅(qū)動 反射技術(shù),將驅(qū)動類加入到內(nèi)容

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

? ? //2.獲得數(shù)據(jù)庫連接? DriverManager類中靜態(tài)方法

? ? //static Connection getConnection(String url, String user, String password)

? ? //返回值是Connection接口的實現(xiàn)類,在mysql驅(qū)動程序

? ? //url: 數(shù)據(jù)庫地址? jdbc:mysql://連接主機IP:端口號//數(shù)據(jù)庫名字

? ? String url =? "jdbc:mysql://localhost:3306/mydb";

? ? String username = "root";

? ? String password = "123456";

? ? Connection con = DriverManager.getConnection(url,username,password);

? ? System.out.println(con);

? ? //Statement createStatement() 獲取Statement對象,將SQL語句發(fā)送到數(shù)據(jù)庫

? ? Statement stat = con.createStatement();

? ? System.out.println(stat);

}

4、執(zhí)行 insert 語句獲取結(jié)果集

int executeUpdate(String sql)?:執(zhí)行數(shù)據(jù)庫中的SQL語句(只限insert delete update)

public static void main(String[] args) throws ClassNotFoundException, SQLException {

? ? //1.注冊驅(qū)動 反射技術(shù),將驅(qū)動類加入到內(nèi)容

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

? ? //2.獲得數(shù)據(jù)庫連接?

? ? //DriverManager類中靜態(tài)方法

? ? //static Connection getConnection(String url, String user, String password)

? ? //返回值是Connection接口的實現(xiàn)類,在mysql驅(qū)動程序

? ? //url: 數(shù)據(jù)庫地址? jdbc:mysql://連接主機IP:端口號//數(shù)據(jù)庫名字

? ? String url =? "jdbc:mysql://localhost:3306/mydb";

? ? String username = "root";

? ? String password = "123456";

? ? Connection con = DriverManager.getConnection(url,username,password);

? ? System.out.println(con);

? ? //3.獲得語句執(zhí)行平臺

? ? //Statement createStatement() 獲取Statement對象,將SQL語句發(fā)送到數(shù)據(jù)庫

? ? Statement stat = con.createStatement();

? ? System.out.println(stat);

? ? //4.執(zhí)行sql語句

? ? //int executeUpdate(String sql)? 執(zhí)行數(shù)據(jù)庫中的SQL語句(只限insert delete update)

? ? int N = stat.executeUpdate("insert into Student(Sno,Sname,Ssex,Sage) value('15450166','派大星','男','66')");

? ? System.out.println(N);

? ? //5.關(guān)閉資源

? ? stat.close();

? ? con.close();

}

5、執(zhí)行 select 語句獲取結(jié)果集

ResultSet executeQuery(String sql):--執(zhí)行select語句

boolean execute(String sql):--執(zhí)行select返回true 執(zhí)行其他的語句返回false

ResultSet實際上就是一張二維的表格,我們可以調(diào)用其boolean next()方法指向某行記錄,當?shù)谝淮握{(diào)用next()方法時,便指向第一行記錄的位置,這時就可以使用ResultSet提供的getXXX(int col)方法(與索引從0開始不同個,列從1開始)來獲取指定列的數(shù)據(jù):

rs.next();? 指向第一行

rs.getInt(1);? 獲取第一行第一列的數(shù)據(jù)

常用方法

Object getObject(int index) / Object getObject(String name) 獲得任意對象

String getString(int index) / Object getObject(String name) 獲得字符串

int getInt(int index) / Object getObject(String name) 獲得整形

double getDouble(int index) / Object getObject(String name) 獲得雙精度浮點型

public static void main(String[] args) throws ClassNotFoundException, SQLException {

? ? //1.注冊驅(qū)動 反射技術(shù),將驅(qū)動類加入到內(nèi)容

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

? ? //2.獲得數(shù)據(jù)庫連接

? ? //DriverManager類中靜態(tài)方法

? ? //static Connection getConnection(String url, String user, String password)

? ? //返回值是Connection接口的實現(xiàn)類,在mysql驅(qū)動程序

? ? //url: 數(shù)據(jù)庫地址? jdbc:mysql://連接主機IP:端口號//數(shù)據(jù)庫名字

? ? String url =? "jdbc:mysql://localhost:3306/mydb";

? ? String username = "root";

? ? String password = "123456";

? ? Connection con = DriverManager.getConnection(url,username,password);

? ? System.out.println(con);

? ? //3.獲得語句執(zhí)行平臺

? ? //Statement createStatement() 獲取Statement對象,將SQL語句發(fā)送到數(shù)據(jù)庫

? ? Statement stat = con.createStatement();

? ? System.out.println(stat);

? ? //4. 調(diào)用執(zhí)行者對象方法,執(zhí)行SQL語句獲取結(jié)果集

? ? String sql = "select * from Student";

? ? ResultSet Rab = stat.executeQuery(sql);

? ? //5 .處理結(jié)果集

? ? while (Rab.next())

? ? {

? ? ? ? System.out.println(Rab.getString("Sno") + "? ? " + Rab.getString("Sname") + "? ? " +

? ? ? ? ? ? ? ? Rab.getString("Ssex") + "? ? " + Rab.getString("Sage"));

? ? }

? ? //6.關(guān)閉資源

? ? stat.close();

? ? con.close();

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文主要內(nèi)容 1、JDBC 2、DBUtils 01JDBC概念和數(shù)據(jù)庫驅(qū)動程序 A: JDBC概念和數(shù)據(jù)庫驅(qū)動程...
    勝浩_ae28閱讀 500評論 0 0
  • 本人的環(huán)境為Myeclipse10、MySQL5.7.15 本文包括:簡介JDBC編程步驟打通數(shù)據(jù)庫程序詳解—Dr...
    廖少少閱讀 4,357評論 7 39
  • 一.介紹 JDBC(Java DataBase Connectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL...
    走著別浪閱讀 383評論 0 2
  • 1 工作日的清晨,天氣很冷。一大早醒來,手機跟電視上推送的都是關(guān)于流感的新聞,癥狀很嚴重藥很緊缺。還好機智的劉娜在...
    撩食先生閱讀 598評論 4 3
  • 在華為上班三年多了。 目前還是外包,但是當初以及現(xiàn)在讓我一直堅持要在這里上班的原因是,這里的制度和流程很成熟,這里...
    Yoscool閱讀 230評論 0 0

友情鏈接更多精彩內(nèi)容