首頁(yè) 培訓(xùn)網(wǎng) 最新資訊 熱門(mén)問(wèn)答

JAVA

13013833891 免費(fèi)試聽(tīng) 在線(xiàn)客服

您的位置: 蘇州培訓(xùn)網(wǎng) > JAVA培訓(xùn)資訊 > 蘇州java大數(shù)據(jù)培訓(xùn)費(fèi)用

蘇州java大數(shù)據(jù)培訓(xùn)費(fèi)用

來(lái)源:教育聯(lián)展網(wǎng) | 發(fā)布時(shí)間: | 編輯:佚名

Java和數(shù)據(jù)庫(kù)之間沒(méi)有必然的聯(lián)系,兩者之間是如何連接的呢?雖然Java提供了各種數(shù)據(jù)庫(kù)接口,但是我們并不知道各種數(shù)據(jù)庫(kù)具體的實(shí)現(xiàn)原理,難以對(duì)接口進(jìn)行具體的實(shí)現(xiàn)。

蘇州java大數(shù)據(jù)培訓(xùn)費(fèi)用

一. JDBC編程概述

1. 什么JDBC

JDBC(Java Database Connection):為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪(fǎng)問(wèn)。它由一組用Java語(yǔ)言編寫(xiě)的類(lèi)和接口組成。是Java訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)和規(guī)范。

2. 常見(jiàn)數(shù)據(jù)庫(kù)介紹

Mysql:開(kāi)源免費(fèi)的數(shù)據(jù)庫(kù),小型的數(shù)據(jù)庫(kù)。非常實(shí)用和受歡迎。已經(jīng)被Oracle收購(gòu)了.MySQL6.x版本也開(kāi)始收費(fèi)。

Oracle:收費(fèi)的大型數(shù)據(jù)庫(kù),Oracle公司的產(chǎn)品。一般中大型公司會(huì)使用。Oracle收購(gòu)了SUN公司,Mysql數(shù)據(jù)庫(kù)。

DB2:IBM公司的收費(fèi)數(shù)據(jù)庫(kù)產(chǎn)品。常應(yīng)用在銀行系統(tǒng)和金融系統(tǒng)中.

SQLServer:MicroSoft 公司收費(fèi)的中型的數(shù)據(jù)庫(kù)。常常在C#、.net等語(yǔ)言中使用。

SyBase:提供了一個(gè)非常專(zhuān)業(yè)數(shù)據(jù)建模的工具PowerDesigner,但是數(shù)據(jù)庫(kù)本身已經(jīng)淡出歷史舞臺(tái)。

SQLite: 嵌入式的小型數(shù)據(jù)庫(kù),基本上用于移動(dòng)端。

Java相關(guān)的數(shù)據(jù)庫(kù):MYSQL,Oracle。

數(shù)據(jù)庫(kù)的設(shè)計(jì)和開(kāi)發(fā),sql語(yǔ)句的編寫(xiě)在這里不做詳細(xì)的介紹。

蘇州java大數(shù)據(jù)培訓(xùn)費(fèi)用

Java

3. JDBC開(kāi)發(fā)原理

Java和數(shù)據(jù)庫(kù)之間沒(méi)有必然的聯(lián)系,兩者之間是如何連接的呢?雖然Java提供了各種數(shù)據(jù)庫(kù)接口,但是我們并不知道各種數(shù)據(jù)庫(kù)具體的實(shí)現(xiàn)原理,難以對(duì)接口進(jìn)行具體的實(shí)現(xiàn)。

所以,數(shù)據(jù)庫(kù)生產(chǎn)商提供了這些接口的實(shí)現(xiàn)類(lèi):驅(qū)動(dòng)

Java提供訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)規(guī)范稱(chēng)為JDBC,而生產(chǎn)廠(chǎng)商提供規(guī)范的實(shí)現(xiàn)類(lèi)稱(chēng)為驅(qū)動(dòng)。

蘇州java大數(shù)據(jù)培訓(xùn)

Java

JDBC是接口,驅(qū)動(dòng)是接口的實(shí)現(xiàn),沒(méi)有驅(qū)動(dòng)將無(wú)法完成數(shù)據(jù)庫(kù)連接,從而不能操作數(shù)據(jù)庫(kù)。每個(gè)數(shù)據(jù)庫(kù)廠(chǎng)商都需要提供自己的驅(qū)動(dòng),用來(lái)連接自己公司的數(shù)據(jù)庫(kù)。

二. JDBC開(kāi)發(fā)步驟

JDBC一般的開(kāi)發(fā)步驟如下:

首先要從官方網(wǎng)站上下載Mysql的驅(qū)動(dòng),并**Eclipse導(dǎo)入驅(qū)動(dòng)(jar包)

java大數(shù)據(jù)培訓(xùn)費(fèi)用

Java

JDBC開(kāi)發(fā)步驟如下:

1.注冊(cè)驅(qū)動(dòng)(Driver)

2.獲得連接(Connection)

3.獲得語(yǔ)句執(zhí)行平臺(tái)(Statement)

4.使用SQL語(yǔ)句進(jìn)行處理

5.釋放資源,關(guān)閉鏈接

數(shù)據(jù)庫(kù)中創(chuàng)建示例:

create table users(

username varchar(10),

pass varchar(10),

nicheng varchar(30)

);

insert into users (username,pass,nicheng) values('wjy','wjykl22','涼涼夜色為你思念成河');

select * from users;

Java連接數(shù)據(jù)庫(kù)

1.注冊(cè)驅(qū)動(dòng):

官方API推薦方法:

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

不推薦使用DriverManager.registerDriver(new com.mysql.jdbc.Driver());注冊(cè),以上代碼有兩點(diǎn)不足:

1.硬編碼,后期不易維護(hù)

2.驅(qū)動(dòng)在源碼中就被注冊(cè)過(guò),驅(qū)動(dòng)會(huì)被兩次注冊(cè)

3.Driver源碼:

4.

public class Driver extends NonRegisteringDriver implements java.sql.Driver {

static {

try {

java.sql.DriverManager.registerDriver(new Driver());

} catch (SQLException E) {

throw new RuntimeException("Can't register driver!");

}

}

}

2.獲得連接:

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

String username = "root";

String password = "wjykl22";

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

其中url:需要連接數(shù)據(jù)庫(kù)的位置(網(wǎng)址)目前來(lái)說(shuō)格式基本上固定。

**部分:jdbc,這是固定的;

第二部分:數(shù)據(jù)庫(kù)名稱(chēng),我們連接的是Mysql數(shù)據(jù)庫(kù),所以使用Mysql

第三部分:由數(shù)據(jù)庫(kù)廠(chǎng)商規(guī)定的,每個(gè)廠(chǎng)商都有各自的要求,分別由數(shù)據(jù)庫(kù)服務(wù)器的IP地址(localhost)、端口號(hào)(3306),以及DATABASE名稱(chēng)(jdbc)組成。

username:數(shù)據(jù)庫(kù)用戶(hù)名。

password:數(shù)據(jù)庫(kù)密碼。

采用上述方法就可以獲得數(shù)據(jù)庫(kù)的鏈接。

3.獲得執(zhí)行平臺(tái)并執(zhí)行sql語(yǔ)句

Statement stat = con.createStatement();

int executeUpdate(String sql);//用于執(zhí)行insert update delete語(yǔ)句.

ResultSet executeQuery(String sql); //用于執(zhí)行select語(yǔ)句.

boolean execute(String sql); //用于執(zhí)行select返回true 執(zhí)行其他的語(yǔ)句返回false.

4.結(jié)果集處理

得到ResultSet結(jié)果集后,需要對(duì)其中的數(shù)據(jù)進(jìn)行數(shù)據(jù)的提取,對(duì)于ResultSet結(jié)果集的處理方法:

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

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

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

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

5.釋放資源

**后一步就是釋放資源,與IO釋放資源的方式如出一轍。

rs.close();

stmt.close();

con.close();

總結(jié)

完整的上述步驟如下:

public class JDBCDemo {

public static void main(String args[]) {

try {

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

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

String username = "root";

String password = "wjykl22";

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

Statement stat = con.createStatement();

stat.executeUpdate("insert into users (username,pass,nicheng) values('wjy2','wjykl33','如水流央')");

ResultSet rs = stat.executeQuery("select * from users");

while(rs.next()) {

System.out.println(rs.getString("username")

"\t" rs.getString("pass") "\t" rs.getString("nicheng"));

}

rs.close();

stat.close();

con.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

預(yù)處理對(duì)象方法

為了防止代碼存在SQL注入漏洞,使得代碼更加完善,我們一般采用預(yù)處理對(duì)象:PreparedStatement

每條sql語(yǔ)句所有的實(shí)際參數(shù),都使用逗號(hào)分隔。

1. 預(yù)處理對(duì)象并執(zhí)行sql語(yǔ)句

String sql = "insert into sort(sid,sname) values(?,?)";

PreparedStatement psmt = conn.prepareStatement(sql)

2. 設(shè)置實(shí)際參數(shù)

void setXxx(int index, Xxx xx)

完整的代碼程序段如下:

public class LoginDemo {

/*

* Java程序?qū)崿F(xiàn)用戶(hù)的登錄,用戶(hù)名和密碼,數(shù)據(jù)庫(kù)檢查

* 防止注入攻擊

* Statment有一個(gè)子接口PrepareStatment,表示預(yù)編譯的SQL語(yǔ)句對(duì)象,可以高效的執(zhí)行

* 這個(gè)方法是Connection數(shù)據(jù)庫(kù)連接的方法

* 如何獲取這個(gè)實(shí)現(xiàn)類(lèi)呢?

*/

public static void main(String args[]) throws Exception {

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

String url = "jdbc:mysql://localhost:3306/world";

String username = "root";

String password = "wjykl22";

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

Scanner sc = new Scanner(System.in);

String user = sc.nextLine();

String pass = sc.nextLine();

//執(zhí)行sql語(yǔ)句,查詢(xún)用戶(hù)名和密碼。

//注意要寫(xiě)問(wèn)號(hào)

String sql = "select * from users where username =? and pass =?";

java.sql.PreparedStatement pst = con.prepareStatement(sql);

//調(diào)用pst中的set方法

pst.setObject(1, user);

pst.setObject(2, pass);

System.out.println(sql);

ResultSet rs = pst.executeQuery();

while(rs.next()) {

System.out.println(rs.getString("username") " " rs.getString("pass"));

}

}

}

三. 工具類(lèi)撰寫(xiě)和使用

作為一名程序員**應(yīng)該學(xué)會(huì)的事情就是偷懶。設(shè)想一下,如果我們要在多各程序中使用Mysql數(shù)據(jù)庫(kù),會(huì)有很多代碼重復(fù)使用,我們可以創(chuàng)建一個(gè)工具類(lèi)Utils,**工具類(lèi)來(lái)完成注冊(cè)驅(qū)動(dòng),獲得鏈接,獲得執(zhí)行平臺(tái)以及釋放資源的操作。

代碼如下:

public class JDBCUtils {

public static final String DRIVERNAME = "com.mysql.jdbc.Driver";

public static final String URL = "jdbc:mysql://localhost:3306/mydb";

public static final String USER = "root";

public static final String PASSWORD = "root";

static {

try {

Class.forName(DRIVERNAME);

} catch (ClassNotFoundException e) {

System.out.println("數(shù)據(jù)庫(kù)驅(qū)動(dòng)注冊(cè)失?。?);

}

}

public static Connection getConn() throws Exception {

Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);

return conn;

}

}

**調(diào)用Utils類(lèi)中的各種靜態(tài)方法來(lái)達(dá)到重復(fù)利用代碼的效果。

四. properties配置文件

上述代碼還是不太方便,如果要修改某個(gè)參數(shù),需要修改源代碼,有沒(méi)有方法能夠不修改源代碼就能夠完成配置的修改呢?

通常情況下,我們習(xí)慣使用properties文件來(lái)存儲(chǔ)與數(shù)據(jù)庫(kù)有關(guān)的配置文件。

1.文件位置:任意,建議src下

2.文件名稱(chēng):任意,擴(kuò)展名為properties

3.文件內(nèi)容:一行一組數(shù)據(jù),格式是“key=value”.

4.3.1 key命名自定義,如果是多個(gè)單詞,習(xí)慣使用點(diǎn)分隔。例如:jdbc.driver

5.3.2 value值不支持中文,如果需要使用非英文字符,將進(jìn)行unicode轉(zhuǎn)換。

例如:

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/jdbc

user=root

password=root

加載配置文件properties的方法:

對(duì)應(yīng)properties文件處理,開(kāi)發(fā)中也使用Properties對(duì)象進(jìn)行。我們將采用加載properties文件獲得流,然后使用Properties對(duì)象進(jìn)行處理。

public class JDBCUtils {

private static String driver;

private static String url;

private static String user;

private static String password;

static {

try {

// 1. 使用Properties處理流

// 使用load()方法加載指定的流

Properties props = new Properties();

Reader is = new FileReader("db.properties");

props.load(is);

// 2. 使用getProperty(key),**key獲得需要的值,

driver = props.getProperty("driver");

url = props.getProperty("url");

user = props.getProperty("user");

password = props.getProperty("password");

} catch (Exception e) {

throw new RuntimeException(e);

}

}

/**

* 獲得連接

*/

public static Connection getConnection() {

try {

// 1 注冊(cè)驅(qū)動(dòng)

Class.forName(driver);

// 2 獲得連接

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

return conn;

} catch (Exception e) {

throw new RuntimeException(e);

}

}

}

總結(jié)

JDBC編程是Java學(xué)習(xí)中的重點(diǎn),對(duì)于初學(xué)Java的學(xué)習(xí)者來(lái)說(shuō)也是一大難點(diǎn),需要大量的練習(xí)和經(jīng)驗(yàn)的總結(jié)。JDBC經(jīng)常和WEB一起使用,在之后文章中會(huì)結(jié)合具體的案例對(duì)JDBC進(jìn)行進(jìn)一步講解。歡迎繼續(xù)觀看后續(xù)內(nèi)容,一起體會(huì)Java語(yǔ)言的智慧與魅力。



咨詢(xún)聯(lián)系方式:13861302024(楊老師)或者QQ:2589245390 還可以直接在線(xiàn)咨詢(xún)

更多課程推薦:

蘇州PLC編程培訓(xùn)課程

蘇州PHP編程開(kāi)發(fā)課程培訓(xùn)

蘇州C語(yǔ)言培訓(xùn)課程

太倉(cāng)PLC編程綜合培訓(xùn)

蘇州JAVA軟件開(kāi)發(fā)培訓(xùn)課程

熱門(mén)機(jī)構(gòu)推薦
JAVA

免費(fèi)體驗(yàn)課開(kāi)班倒計(jì)時(shí)

11: 41: 09

稍后會(huì)有專(zhuān)業(yè)老師給您回電,請(qǐng)保持電話(huà)暢通

咨詢(xún)電話(huà):13013833891

本周熱門(mén)資訊

全國(guó)分站 熱門(mén)機(jī)構(gòu)

北京JAVA培訓(xùn) 上海JAVA培訓(xùn) 廣州JAVA培訓(xùn) 深圳JAVA培訓(xùn) 杭州JAVA培訓(xùn) 蘇州JAVA培訓(xùn) 南京JAVA培訓(xùn) 天津JAVA培訓(xùn) 佛山JAVA培訓(xùn) 南寧JAVA培訓(xùn) 長(zhǎng)沙JAVA培訓(xùn) 重慶JAVA培訓(xùn) 太原JAVA培訓(xùn) 青島JAVA培訓(xùn) 寧波JAVA培訓(xùn) 鄭州JAVA培訓(xùn) 西安JAVA培訓(xùn) 廈門(mén)JAVA培訓(xùn) 武漢JAVA培訓(xùn) 成都JAVA培訓(xùn) 無(wú)錫JAVA培訓(xùn) 濟(jì)南JAVA培訓(xùn) 昆明JAVA培訓(xùn) 貴陽(yáng)JAVA培訓(xùn) 揚(yáng)州JAVA培訓(xùn) 徐州JAVA培訓(xùn) 珠海JAVA培訓(xùn) 合肥JAVA培訓(xùn) 長(zhǎng)春JAVA培訓(xùn)

深圳博為峰教育深圳中公優(yōu)就業(yè)南京博為峰教育南京和盈教育

申請(qǐng)?jiān)嚶?tīng)名額

已有10254人申請(qǐng)免費(fèi)試聽(tīng)

01電話(huà)咨詢(xún) | 13013833891

QQ:1413838287
加盟合作:0755-83654572

今日已有25人申請(qǐng),本月限額500