2017-12-28 數(shù)據(jù)庫連接-JDBC

JDBC在java.sql包中。

DriverManager類在java.sql包中。

加載驅動程序使用的是java.lang包中的Class類的forName()方法,加載JDBC驅動程序。

1.JDBC的介紹

2.JDBC連接數(shù)據(jù)庫

3.數(shù)據(jù)處理

4.綜合實例

?具體怎么安裝的Mysql以及找到所需要的包,以后學習看課本或者查資料。

1.JDBC的介紹

(1)在應用中,java會連接數(shù)據(jù)庫,以實現(xiàn)一些應用軟件設計。也就是常說的Java做前端,數(shù)據(jù)庫管理系統(tǒng)做后臺的應用系統(tǒng)。這樣的好處就是:數(shù)據(jù)庫管理系統(tǒng)可以完成大量數(shù)據(jù)的存儲和處理,Java做前端也可以達到界面友好、一般用戶能較容易與計算機交互的目的。

? ? (2)java連接數(shù)據(jù)庫,java語言是通過JDBC(Java DataBase Connectivity)實現(xiàn)與數(shù)據(jù)庫系統(tǒng)的連接。

JDBC是java數(shù)據(jù)庫連接規(guī)范,是一種可執(zhí)行SQL語句的Java API,由一些Java語言寫的類和接口組成,在java.sql包中。

(3)常用的JDBC:


(3)JDBC可以完成的功能:

? ? ? ?1.與數(shù)據(jù)庫的連接。

(Connettion conn = null;?

try{

? conn = (Connection)DriverManager.getConnection(url ,user,password;);

})

? ? ? ?2.向數(shù)據(jù)庫發(fā)送sql語句。

? ? ? 3.處理數(shù)據(jù)庫返回的結果。(Resultset ? 一般是在查詢操作中)

[PreparedStatement psmt3 = (PreparedStatement) conn.prepareStatement(sql);

ResultSet rs = psmt3.executeQuery();

]


(4)JDBC訪問數(shù)據(jù)庫的類型【共3種】(一般是采用第二種(JDBC直接與數(shù)據(jù)庫連接),即Java編寫的驅動程序直接與數(shù)據(jù)庫連接)



查詢語句(顯示記錄):

(1)select * from st; //查詢表st中的所有元素,即會顯示表st的所有信息

? ? ? ? select * from st where major ?= "computer";//查詢表st中的專業(yè)是計算機的所有元素,即顯示表st中專業(yè)是computer的所有人。

注:這個major 可以改為其他的元素,例如name ,age,看題目要求查詢什么。?

2.與數(shù)據(jù)庫的連接


例如:

String driver = "com.mysql.jdbc.Driver";//JDBC驅動程序

String url ="jdbc:mysql://localhost:3306/student1";//jdbc:[數(shù)據(jù)庫類型]://[數(shù)據(jù)庫ip地址]:[數(shù)據(jù)庫端口](默認是localhost_3306)/[數(shù)據(jù)庫名](僅僅修改數(shù)據(jù)庫名,其他不變)

String user ="root";

String password ="root";

Connection conn = null;

try {

Class.forName(driver);//2.加載JDBC驅動程序(此時會出現(xiàn)錯誤,修改錯誤,選擇surround with try/catch)

conn = (Connection)DriverManager.getConnection(url, "root", "root"); //3.把前面的信息進行連接(此時還是會有錯誤,修改錯誤,選擇Add Exception to existing catch caluse(選擇SQLException[所有的數(shù)據(jù)庫異常都叫做SQLException]),進行合并異常類型)(目前為止,連接完成)

} catch (ClassNotFoundException | SQLException e) {

e.printStackTrace();

}

3.數(shù)據(jù)處理

Statement

常用PreparedStatement進行格式化成數(shù)據(jù)庫能識別的語句,即處理預編譯的SQL語句。




關閉結果集:rs.close();

關閉連接:conn.close();

這些是寫在try最后的。



實例:java與數(shù)據(jù)庫的連接,實現(xiàn)基本的增刪改查操作。

操作步驟:

(1)使用Mysql數(shù)據(jù)庫 ?(navicat.exe軟件)

? ? ? ? ?1.先啟動軟件jspStudy,點擊進入-啟動(運行狀態(tài)是Apach,Tomcat,Mysql),(使用完點擊-停止).如下圖所示。


(1)啟動此軟件
(2)進行”啟動”


? ? ? ? 2.啟動navicat.exe,進行連接,然后建立數(shù)據(jù)庫,建立表。

? ? ? ?(1)單擊連接,不寫輸入密碼,不寫連接名 ,就會生成默認的連接名localhost_3306.

? ? ? ? ? 無論使用哪個連接名,都不需要改動代碼的信息。

? ? ? ? ? 也可以新建連接(例如本地數(shù)據(jù))。類似電池的模樣(代表連接),類似一摞硬幣的代表數(shù)據(jù) ? ? ? ? 庫,而綠色的硬幣的數(shù)據(jù)庫代表你當前使用的數(shù)據(jù)庫。



(1)啟動軟件(考試時只啟動它)


(2)點擊左上角-連接

? (2)建立數(shù)據(jù)庫

? ? ? 連接名(以localhost_3306為例) -右擊 -新建數(shù)據(jù)庫?


(1)

在“”新建數(shù)據(jù)庫“”彈出框中,輸入數(shù)據(jù)庫名(必須是英文名,可以有數(shù)字,不能是中文),然后選擇好字符集(UTF-8 Unicode)[防止亂碼] (如果忘記了,選擇新建好的數(shù)據(jù)庫-右擊-數(shù)據(jù)庫屬性進行修改),點擊確定。


(2)

點開數(shù)據(jù)庫student1,下面有個“”表”-右擊-新建表,在彈出框中,設置好數(shù)據(jù)。


(1)

首先設置主鍵,如下圖所示,名id,類型int,左下角打鉤自動遞增,在那欄前面右擊-選擇主鍵,然后會“*”變成跟大寫I似的,且最后有個鑰匙,則設置主鍵成功。如下圖所示。


(2)

然后進行設置其他表中的元素(抽象設置),選擇上面菜單欄的“添加欄位”(此時欄位在下方)【如果選擇插入欄位,則是往上插,可以通過菜單欄的“下移”調(diào)下來】,并且進行數(shù)據(jù)設置。

注:名name ,類型text (注意無string);

? ? ? ?名age,類型int.

點擊保存,輸入表名st,點擊確定,建表成功。

如下圖所示。


(3)

如果再進行表的其他元素插入與設置,表st右擊-設計表,進行元素插入設置。如下圖。


(1)


(2)

最后,進行寫入表中元素的具體數(shù)據(jù)(例如:名:張三 ,年齡:12),表st雙擊打開,就可以填入數(shù)據(jù),填完選擇最下面的對號,繼續(xù)填入數(shù)據(jù)就是最下面選擇“插入記錄(此時是往上插,)”,填完數(shù)據(jù),點擊對號,選擇最下面的“刷新”,就會降下來。


(3)

(2).在eclipse下進行編碼,實現(xiàn)兩者互動。

package JDBC;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import com.mysql.jdbc.Connection;

import com.mysql.jdbc.PreparedStatement;

/*1.新建主類,程序都寫在主類里

*2.導包(mysql-connector-java-5.1.45-bin.jar)(考試時包會在桌面上) 怎么找到的這個包?(后續(xù)學習)

*在自己所在的項目project(不是包中,是最外面的地方)中右擊-Properties(屬性)-java Build path-右邊選擇Add External jars(添加擴展包)


在左邊有個Referenced Libraries下就會有導入的包,則表示

*則在中間編輯區(qū)會顯示這個包。

* 3.編輯程序

*? (1)設置好數(shù)據(jù)庫的基本信息,再進行連接

*? (2)進行操作:增加(插入),刪除,修改,[這三個都是執(zhí)行更新[executeUpdate()]]查詢(注意返回一個結果集Resultset 進行executeQuery());

*? (3)在執(zhí)行時,執(zhí)行一個,其他的就注銷執(zhí)行那條語句,查詢操作放在最后,就可以顯示出前面的執(zhí)行操作做好的結果了? ?

*/

//此處只執(zhí)行了插入操作和查詢操作,其他的注銷了。

public class Test1 {

public static void main(String[] args) {

/*

* 1.設置要連接的數(shù)據(jù)庫的基本信息

* (1.先設置好基本信息driver? url(注意好localhost:3306這之間需要緊密相連,無空格,且是英文下的) user password 定義這四個變量,填好與數(shù)據(jù)庫有關的信息)

* (2.連接Connection conn = null;)

*/

//1.設置基本信息

String driver = "com.mysql.jdbc.Driver";//JDBC驅動程序

String url ="jdbc:mysql://localhost:3306/student1";//jdbc:[數(shù)據(jù)庫類型]://[數(shù)據(jù)庫ip地址]:[數(shù)據(jù)庫端口](默認是localhost_3306)/[數(shù)據(jù)庫名](僅僅修改數(shù)據(jù)庫名,其他不變)

String user ="root";

String password ="root";

Connection conn = null;

try {

//2.加載JDBC驅動程序(此時會出現(xiàn)錯誤,修改錯誤,選擇surround with try/catch)

Class.forName(driver);

conn = (Connection)DriverManager.getConnection(url, "root", "root"); //3.把前面的信息進行連接(此時還是會有錯誤,修改錯誤,選擇Add Exception to existing catch caluse(選擇SQLException[所有的數(shù)據(jù)庫異常都叫做SQLException]),進行合并異常類型)(目前為止,連接完成)

/*2.執(zhí)行操作

* /

*/

//插入操作

//如果插入多條信息,直接插入,和這個一樣。

String sql ="insert into st(name,age) values(?,?)";//sql插入語句

PreparedStatement psmt = (PreparedStatement) conn.prepareStatement(sql); //轉換成數(shù)據(jù)庫能識別的語句(2個大寫的PreparedStatement,1個小寫的)

psmt.setString(1, "王五");

psmt.setString(1, "李六");

psmt.setInt(2, 34);

psmt.setInt(2, 44);

psmt.executeUpdate();


//刪除操作

sql =? "delete from st where name = ?";

PreparedStatement psmt1 = (PreparedStatement) conn.prepareStatement(sql);

psmt1.setString(1, "張三");//對應sql定義語句的位置從1開始

? ? //psmt1.executeUpdate();

//修改操作

sql = "update st set age =? where name = ?";

PreparedStatement psmt2 = (PreparedStatement) conn.prepareStatement(sql);

psmt2.setInt(1, 34);

psmt2.setString(2, "李四");

//psmt2.executeUpdate();//別忘記更新信息執(zhí)行

//查詢操作

sql = "select * from st";

PreparedStatement psmt3 = (PreparedStatement) conn.prepareStatement(sql);

ResultSet rs = psmt3.executeQuery(); //執(zhí)行查詢會返回一個結果集[這個是與其他操作的區(qū)別]

while(rs.next()){

System.out.println("姓名:"+rs.getString(2));//數(shù)據(jù)庫中從1開始

System.out.println("年齡:"+rs.getInt(3));

}

} catch (ClassNotFoundException | SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

結果如下圖:


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

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

  • JDBC簡介 SUN公司為了簡化、統(tǒng)一對數(shù)據(jù)庫的操作,定義了一套Java操作數(shù)據(jù)庫的規(guī)范,稱之為JDBC。JDBC...
    奮斗的老王閱讀 1,628評論 0 51
  • 本人的環(huán)境為Myeclipse10、MySQL5.7.15 本文包括:簡介JDBC編程步驟打通數(shù)據(jù)庫程序詳解—Dr...
    廖少少閱讀 4,346評論 7 39
  • 生活中我們常常會碰到這樣一種人,對于不太熟的朋友或者同事的請求,不管自己愿意不愿意,都會統(tǒng)統(tǒng)應允。但私...
    小瑞Stephanie閱讀 438評論 0 2
  • 目錄 聲明:百科詞條人人可編輯,創(chuàng)建和修改均免費詳情 2圖 中國足球 多義項 國家足球運動更多義項 足球運動,最早...
    797bd44fe18a閱讀 191評論 0 0
  • 春香倦懶,柳飛鶯啼。賈寶玉抱著一大沓紅封軟皮獎狀,踏著輕快的步伐穿梭在省大里,這媚好的春光透著云層嬌羞地朝大地一展...
    輕飏zyy閱讀 3,465評論 16 16

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