欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)激活碼778899分享:MySQL JDBC 編程

柚子快報(bào)激活碼778899分享:MySQL JDBC 編程

http://yzkb.51969.com/

難道是針對(duì)?個(gè)數(shù)據(jù)庫(kù)寫(xiě)?套調(diào)?的?法嗎?因?yàn)轵?qū)動(dòng)和 API 完全不同,所以不同的數(shù)據(jù)操作也是不同 的,要針對(duì)每種數(shù)據(jù)庫(kù)寫(xiě)?套調(diào)?代碼就太麻煩了,那要怎么辦?

解決以上問(wèn)題的辦法就是使用 JDBC。

2.1 JDBC 定義

JDBC,即 Java Database Connectivity,Java 數(shù)據(jù)庫(kù)連接。是?種?于執(zhí)行?SQL 語(yǔ)句的 Java API,?它是 Java 中的數(shù)據(jù)庫(kù)連接規(guī)范。這個(gè) API 由 java.sql.*,javax.sql.* 包中的?些類(lèi)和接?組成,它為?Java 開(kāi)發(fā)人員操作數(shù)據(jù)庫(kù)提供了?個(gè)標(biāo)準(zhǔn)的 API,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)?訪問(wèn)。

簡(jiǎn)單來(lái)說(shuō),使用了 JDBC 之后,不管是什么數(shù)據(jù)庫(kù)與什么數(shù)據(jù)庫(kù)驅(qū)動(dòng),我們只需要使用?套標(biāo)準(zhǔn)代碼就可以實(shí)現(xiàn)對(duì)不同數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)?操作(添加、修改、刪除、查詢(xún)),也就解決了我們上面說(shuō)的那些問(wèn)題了。

2.2?JDBC 工作原理

JDBC 為多種關(guān)系數(shù)據(jù)庫(kù)提供了統(tǒng)?訪問(wèn)?式,作為特定?商數(shù)據(jù)庫(kù)訪問(wèn) API 的?種?級(jí)抽象,?它主要包含?些通?的接?類(lèi)。

JDBC 訪問(wèn)數(shù)據(jù)庫(kù)層次結(jié)構(gòu):

JDBC 優(yōu)勢(shì):

Java 語(yǔ)?訪問(wèn)數(shù)據(jù)庫(kù)操作完全?向抽象接?編程。 開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)?不?限定在特定數(shù)據(jù)庫(kù)?商的 API。 程序的可移植性??增強(qiáng)。

3.JDBC 使用

=========

JDBC 操作步驟如下:

3.1 創(chuàng)建項(xiàng)目并添加 MySQL 驅(qū)動(dòng)

創(chuàng)建?個(gè) Java 項(xiàng)?,并添加 MySQL 驅(qū)動(dòng)(mysql-connector-java-5.1.47.jar),需要注意不同數(shù)據(jù)庫(kù)版本要對(duì)應(yīng)相應(yīng)的驅(qū)動(dòng)包。

操作步驟:點(diǎn)擊項(xiàng)?屬性 -> Modules -> Dependencies -> 點(diǎn)擊“+”號(hào) -> 1.Jars or directories -> 選擇驅(qū)動(dòng)包 -> 點(diǎn)擊 OK 確認(rèn)。

3.2 使用代碼操作數(shù)據(jù)庫(kù)

操作數(shù)據(jù)庫(kù) MySQL 提供了兩種操作 API:

DriverManager DataSource(推薦使用)

接下來(lái)咱們使? DataSource 來(lái)實(shí)現(xiàn)操作數(shù)據(jù)庫(kù)。

使用代碼操作數(shù)據(jù)庫(kù)分為以下 5 個(gè)步驟:

獲取數(shù)據(jù)源(準(zhǔn)備?作,點(diǎn)擊 MySQL 連接?具,并輸??戶(hù)名、密碼) 獲取連接(敲擊回車(chē)試圖建?客戶(hù)端和服務(wù)器端的連接) 獲取執(zhí)行器(連接到服務(wù)器并切換到數(shù)據(jù)庫(kù)) 查詢(xún)或操作數(shù)據(jù)庫(kù)(輸?命令,并得到結(jié)果) 關(guān)閉連接(關(guān)閉客戶(hù)端)

3.2.1 獲得數(shù)據(jù)源

數(shù)據(jù)源是 MysqlDataSource,獲取?式如下,需要輸?數(shù)據(jù)庫(kù)連接的 MySQL 服務(wù)器地址、?戶(hù)名和密碼:

// 1.獲取數(shù)據(jù)源 DataSource (設(shè)置MySQL的服務(wù)器地址)

MysqlDataSource dataSource = new MysqlDataSource();

// 1.1 設(shè)置連接的 MySQL 服務(wù)器

dataSource.setURL("jdbc:mysql://127.0.0.1:3306/study?characterEncoding=utf8&useSSL=true");

// 1.2 設(shè)置?戶(hù)名

dataSource.setUser("root");

// 1.3 設(shè)置密碼

dataSource.setPassword("12345678");

注意:如果操作過(guò)程中出現(xiàn)了錯(cuò)誤,可嘗試將useSSL改為false,因?yàn)橛行╇娔X不支持SSL加密。

3.2.2 獲得連接

// 2.得到連接 Connection

Connection connection = dataSource.getConnection();

連接對(duì)象是 Connection,注意此步驟操作容易出錯(cuò),?定是 java.sql?包下的 Connection 對(duì)象:

3.2.3 獲得執(zhí)行器

執(zhí)行器是用來(lái)執(zhí)行?SQL 命令的,執(zhí)行器有三種:

Statement PreparedStatement CallableStatement

實(shí)際開(kāi)發(fā)中最常?的是 PreparedStatement 對(duì)象,PreparedStatement 優(yōu)點(diǎn)如下:

具體實(shí)現(xiàn)如下:

// 3.得到執(zhí)行器 (組裝MySQL)

String insertSql = "insert into city(id, name) values(?, ?)";

PreparedStatement statement = connection.prepareStatement(insertSql);

// 填充占位符

statement.setInt(1, 5);

statement.setString(2, "廣東");

PreparedStatement 有主要兩種重要的方法:

executeQuery():方法執(zhí)行后返回單個(gè)結(jié)果集的,通常用于 select 語(yǔ)句。 executeUpdate():方法返回值是?個(gè)整數(shù),指示受影響的行數(shù),通常用于 update、insert、?delete 語(yǔ)句。

3.3.4 查詢(xún)或操作數(shù)據(jù)庫(kù)

添加數(shù)據(jù)庫(kù)使用?PreparedStatement.executeUpdate() 方法,返回?個(gè) 整數(shù),具體實(shí)現(xiàn)代碼如下:

// 4.執(zhí)行 SQL

int result = statement.executeUpdate();

System.out.println("受影響的行數(shù):" + result);

3.3.5 關(guān)閉數(shù)據(jù)庫(kù)連接

關(guān)閉數(shù)據(jù)庫(kù)連接是為了不浪費(fèi) MySQL 服務(wù)器端的資源,最終實(shí)現(xiàn)代碼:

package city_jdbc;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.SQLException;

public class AddCity {

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

// 1.獲取數(shù)據(jù)源 DataSource (設(shè)置MySQL的服務(wù)器地址)

MysqlDataSource dataSource = new MysqlDataSource();

// 1.1 設(shè)置連接的 MySQL 服務(wù)器

dataSource.setURL("jdbc:mysql://127.0.0.1:3306/study?characterEncoding=utf8&useSSL=true");

// 1.2 設(shè)置?戶(hù)名

dataSource.setUser("root");

// 1.3 設(shè)置密碼

dataSource.setPassword("12345678");

// 2.得到連接 Connection

Connection connection = dataSource.getConnection();

// 3.得到執(zhí)行器 (組裝MySQL)

String insertSql = "insert into city(id, name) values(?, ?)";

PreparedStatement statement = connection.prepareStatement(insertSql);

// 填充占位符

statement.setInt(1, 5);

statement.setString(2, "廣東");

// 4.執(zhí)行 SQL

int result = statement.executeUpdate();

System.out.println("受影響的行數(shù):" + result);

// 5.關(guān)閉資源(從小到大)

statement.close();

connection.close();

}

}

運(yùn)行結(jié)果:

4. 查詢(xún)功能實(shí)現(xiàn)

查詢(xún)數(shù)據(jù)庫(kù)使用?PreparedStatement.executeQuery?方法,返回?個(gè) ResultSet 對(duì)象,具體實(shí)現(xiàn)代碼如下:

package city_jdbc;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

public class SelCity {

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

// 1.獲取數(shù)據(jù)源,得到DataSource

MysqlDataSource dataSource = new MysqlDataSource();

dataSource.setURL("jdbc:mysql://127.0.0.1:3306/study?characterEncoding=utf8&useSSL=true");

dataSource.setUser("root");

dataSource.setPassword("12345678");

// 2.得到連接

Connection connection = dataSource.getConnection();

// 3.得到執(zhí)行器,并組裝MySQL

String selectSql = "select * from city where id

PreparedStatement statement = connection.prepareStatement(selectSql);

statement.setInt(1, 10);

// 4.執(zhí)行SQL,打印查詢(xún)結(jié)果

ResultSet resultSet = statement.executeQuery(); // 得到結(jié)果集

while (resultSet.next()) { // 如果結(jié)果集的下一行有數(shù)據(jù)

City city = new City();

// resultSet.getInt("id") ——> 查詢(xún)當(dāng)前行中列名為“id”的值

city.setId(resultSet.getInt("id"));

city.setName(resultSet.getString("name"));

System.out.println(city);

}

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

resultSet.close();

statement.close();

connection.close();

}

}

ResultSet 對(duì)象它被稱(chēng)為結(jié)果集,它代表符合 SQL 語(yǔ)句條件的所有行,并且它通過(guò)?套 getXXX 方法提供了對(duì)這些行中數(shù)據(jù)的訪問(wèn)。

ResultSet 里的數(shù)據(jù)一行一行排列,每行有多個(gè)字段,并且有?個(gè)記錄指針,指針?biāo)傅臄?shù)據(jù)行叫做當(dāng)前數(shù)據(jù)行,我們只能來(lái)操作當(dāng)前的數(shù)據(jù)行。我們?nèi)绻胍〉媚?條記錄,就要使用?ResultSet 的 next() 方法 ,如果我們想要得到 ResultSet 里的所有記錄,就應(yīng)該使用?while 循環(huán)。

City 類(lèi):

柚子快報(bào)激活碼778899分享:MySQL JDBC 編程

http://yzkb.51969.com/

相關(guān)文章

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19526263.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄