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

JAVA

13013833891 免費試聽 在線客服

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

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

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

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

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

一. JDBC編程概述

1. 什么JDBC

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

2. 常見數(shù)據(jù)庫介紹

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

Oracle:收費的大型數(shù)據(jù)庫,Oracle公司的產(chǎn)品。一般中大型公司會使用。Oracle收購了SUN公司,Mysql數(shù)據(jù)庫。

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

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

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

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

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

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

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

Java

3. JDBC開發(fā)原理

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

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

Java提供訪問數(shù)據(jù)庫規(guī)范稱為JDBC,而生產(chǎn)廠商提供規(guī)范的實現(xiàn)類稱為驅(qū)動。

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

Java

JDBC是接口,驅(qū)動是接口的實現(xiàn),沒有驅(qū)動將無法完成數(shù)據(jù)庫連接,從而不能操作數(shù)據(jù)庫。每個數(shù)據(jù)庫廠商都需要提供自己的驅(qū)動,用來連接自己公司的數(shù)據(jù)庫。

二. JDBC開發(fā)步驟

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

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

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

Java

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

1.注冊驅(qū)動(Driver)

2.獲得連接(Connection)

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

4.使用SQL語句進行處理

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

數(shù)據(jù)庫中創(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ù)庫

1.注冊驅(qū)動:

官方API推薦方法:

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

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

1.硬編碼,后期不易維護

2.驅(qū)動在源碼中就被注冊過,驅(qū)動會被兩次注冊

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ù)庫的位置(網(wǎng)址)目前來說格式基本上固定。

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

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

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

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

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

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

3.獲得執(zhí)行平臺并執(zhí)行sql語句

Statement stat = con.createStatement();

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

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

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

4.結(jié)果集處理

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

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) 獲得雙精度浮點型

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ù)處理對象方法

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

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

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

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

PreparedStatement psmt = conn.prepareStatement(sql)

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

void setXxx(int index, Xxx xx)

完整的代碼程序段如下:

public class LoginDemo {

/*

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

* 防止注入攻擊

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

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

* 如何獲取這個實現(xiàn)類呢?

*/

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語句,查詢用戶名和密碼。

//注意要寫問號

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"));

}

}

}

三. 工具類撰寫和使用

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

代碼如下:

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ù)庫驅(qū)動注冊失??!");

}

}

public static Connection getConn() throws Exception {

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

return conn;

}

}

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

四. properties配置文件

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

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

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

2.文件名稱:任意,擴展名為properties

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

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

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

例如:

driver=com.mysql.jdbc.Driver

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

user=root

password=root

加載配置文件properties的方法:

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

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 注冊驅(qū)動

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í)中的重點,對于初學(xué)Java的學(xué)習(xí)者來說也是一大難點,需要大量的練習(xí)和經(jīng)驗的總結(jié)。JDBC經(jīng)常和WEB一起使用,在之后文章中會結(jié)合具體的案例對JDBC進行進一步講解。歡迎繼續(xù)觀看后續(xù)內(nèi)容,一起體會Java語言的智慧與魅力。



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

更多課程推薦:

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

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

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

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

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

熱門機構(gòu)推薦
JAVA

免費體驗課開班倒計時

11: 41: 09

稍后會有專業(yè)老師給您回電,請保持電話暢通

咨詢電話:13013833891

本周熱門資訊

全國分站 熱門機構(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) 長沙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) 無錫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)

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

申請試聽名額

已有10254人申請免費試聽

01電話咨詢 | 13013833891

QQ:1413838287
加盟合作:0755-83654572

今日已有25人申請,本月限額500