中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

如何讓單位網(wǎng)站做防護十句經(jīng)典廣告語

如何讓單位網(wǎng)站做防護,十句經(jīng)典廣告語,同城做哪個網(wǎng)站推廣效果好,雙語網(wǎng)站用什么程序做目錄 1.數(shù)據(jù)庫編程的必備條件 2.Java的數(shù)據(jù)庫編程JDBC 3.JDBC的工作原理 4.第三方庫connector的下載和導(dǎo)包 5.JDBC的使用 使用步驟 (1)創(chuàng)建數(shù)據(jù)源對象DataSource (2)給對象設(shè)置必要的屬性 (3)和數(shù)據(jù)…

目錄

1.數(shù)據(jù)庫編程的必備條件

2.Java的數(shù)據(jù)庫編程JDBC

?3.JDBC的工作原理

4.第三方庫connector的下載和導(dǎo)包

5.JDBC的使用

使用步驟

?(1)創(chuàng)建數(shù)據(jù)源對象DataSource

(2)給對象設(shè)置必要的屬性

(3)和數(shù)據(jù)庫建立網(wǎng)絡(luò)連接

(4)程序構(gòu)造sql語句

(5)將sql語句傳到服務(wù)器上執(zhí)行

(6)釋放上述資源

優(yōu)化

整體代碼

?具體操作

6.JDBC常用接口和類

(1)JDBC API

(2)數(shù)據(jù)庫連接Connection

(2)Statement對象


1.數(shù)據(jù)庫編程的必備條件

  • 編程語言,如Java,C、C++、Python等
  • 數(shù)據(jù)庫,如Oracle,MySQL,SQL Server等
  • 數(shù)據(jù)庫驅(qū)動包:不同的數(shù)據(jù)庫,對應(yīng)不同的編程語言提供了不同的數(shù)據(jù)庫驅(qū)動包,如:MySQL提 供了Java的驅(qū)動包mysql-connector-java,需要基于Java操作MySQL即需要該驅(qū)動包。同樣的, 要基于Java操作Oracle數(shù)據(jù)庫則需要Oracle的數(shù)據(jù)庫驅(qū)動包ojdbc。

2.Java的數(shù)據(jù)庫編程JDBC

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

?3.JDBC的工作原理

JDBC 為多種關(guān)系數(shù)據(jù)庫提供了統(tǒng)一訪問方式,作為特定廠商數(shù)據(jù)庫訪問API的一種高級抽象,它主要包 含一些通用的接口類。

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

JDBC優(yōu)勢:

  1. Java語言訪問數(shù)據(jù)庫操作完全面向抽象接口編程
  2. 開發(fā)數(shù)據(jù)庫應(yīng)用不用限定在特定數(shù)據(jù)庫廠商的API
  3. 程序的可移植性大大增強

4.第三方庫connector的下載和導(dǎo)包

下載

這里提供一個最為簡單的下載方法:去maven中央倉庫下載?

  1. 鏈接:

看自己的數(shù)據(jù)庫的版本情況來下載(點擊Central下載即可)對應(yīng)的版本(經(jīng)典版最高是8.0,更高的版本在最新版中

注:MySQL的版本必須和connector的版本一致

導(dǎo)包

  1. 下載好 .jar 包
  2. 把 .jar導(dǎo)入到自己的Java項目中
    先在項目中創(chuàng)建一個目錄.名字隨便起,但是不要帶有中文/特殊字符
    把下載好的jar包,拷貝到lib目錄中
    右鍵剛才的lib目錄, 點擊add as library(告訴idea,這個lib目錄是一個"庫"目錄)

5.JDBC的使用

使用步驟

?(1)創(chuàng)建數(shù)據(jù)源對象DataSource

(描述當前數(shù)據(jù)從哪來即數(shù)據(jù)庫服務(wù)器所在的位置)
通過原碼我們可以看到DataSourse是被interface修飾的類,不能用來直接實例化該對象,因此我們只能實例化它的子類MysqlDataSource

DataSource dataSource = new MysqlDataSource();

DataSourse:Java標準庫JDBC自帶的接口
MysqlDataSource:剛剛導(dǎo)入的 .jar包

(2)給對象設(shè)置必要的屬性


1)數(shù)據(jù)庫服務(wù)器在哪里? ?2)訪問服務(wù)器的賬戶是啥? ? ?3)訪問服務(wù)器的密碼是啥

//第一種寫法
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java?characterEncoding=utf8&useSSL=false");
((MysqlDataSource) dataSource).setUser("root");
((MysqlDataSource) dataSource).setPassword("jqka");//第二種寫法
MysqlDataSource mysqlDataSource = new MysqlDataSource();
mysqlDataSource.setUrl("jdbc:mysql://127.0.0.1:3306/java112?characterEncoding=utf8&useSSL=false");
mysqlDataSource.setUser("root");
mysqlDataSource.setPassword("jqka");

第一種寫法的好處:耦合程度更低
按照第一種寫法,后續(xù)代碼中如果再使用DataSource這個東西,是看不到"MysqlDataSource"這個信息的.
就使得后續(xù)的其他部分代碼和“mysql"這個概念解耦合了.后面的代碼,和啥數(shù)據(jù)庫沒關(guān)系.如果要更換數(shù)據(jù)庫,此時代碼修改的成本就比較低

說明:

Url

jdbc:mysql: 描述了url的用途是用來給jdbc的mysql使用的
127.0.0.1: IP地址.描述了mysql服務(wù)器所在的主機的位置.
3306:端口號,用來區(qū)分一個主機上的應(yīng)用程序的.
java112?characterEncoding=utf8:數(shù)據(jù)庫名和字符集
useSSL=false:額外的參數(shù)起到了針對這次的數(shù)據(jù)庫連接,解釋說明,這里表示關(guān)閉加密

User

root就是DBA權(quán)限最高賬戶管理員

Password

jqka即自己數(shù)據(jù)庫的密碼

(3)和數(shù)據(jù)庫建立網(wǎng)絡(luò)連接

受查異常,所以要向上進行拋異常

//2.和數(shù)據(jù)庫服務(wù)器建立連接
Connection connection = dataSource.getConnection();
System.out.println(connection);

此處的Connection 對象,就是表示了一個數(shù)據(jù)庫連接,
注意:

這里必須選擇sql的Connection

(4)程序構(gòu)造sql語句

我們之前在cmd敲的sql,是把 sql發(fā)送到mysql服務(wù)器mysql服務(wù)器負責解板,解析完成之后,執(zhí)行.解析檢查sql是否有語法錯誤具體要完成什么工作.....
解析工作,需要消耗系統(tǒng)資源
由于mysql服務(wù)器,同一時刻可能要同時給多個客戶端提供服務(wù).解析工作積少成多,也就會比較消耗資源

因此往往就可以把解析工作,放到客戶端來完成(自己寫的代碼)
客戶端發(fā)送sql之前,先解析好,先把一些能做的工作做好,這樣服務(wù)器就可以降低一些工作量,減輕壓力了

構(gòu)造方法有很多種,這里我們使用最主流的PreparedStatement預(yù)編譯語句來完成這一操作

//4.程序構(gòu)造MySQL語句
String sql = "create table test(id int,name varchar(20))";
PreparedStatement statement = connection.prepareStatement(sql);

(5)將sql語句傳到服務(wù)器上執(zhí)行

statement.executeUpdate();的返回值表示影響了幾行數(shù)據(jù)

(6)釋放上述資源

//5.釋放上述資源
statement.close();
connection.close();

說明:釋放資源的順序,要和創(chuàng)建資源的順序相反
建立連接/創(chuàng)建語句的時候,就需要消耗一定的內(nèi)存/硬盤/網(wǎng)絡(luò)籌資源....這些資源,都是跟隨這個連接來走的.
如果連接不再使用了,就需要把這些資源釋放掉.

優(yōu)化

此時我們還可以使用Scanner自定義讓用戶輸入數(shù)據(jù)
?

Scanner scanner = new Scanner(System.in);
System.out.println("請輸入id: ");
int id = scanner.nextInt();
System.out.println("請輸入name: ");
String name = scanner.next();

在我們輸入的時候可以使用占位符來進行操作避免出現(xiàn)多個引號的情況

String sql = "insert into student values(?,?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1,id);
statement.setString(2,name);

注意:

替換時下標是從1開始的

整體代碼

package jdbc;import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;public class TestJDBC1 {public static void main(String[] args) throws SQLException {Scanner scanner = new Scanner(System.in);System.out.println("請輸入id: ");int id = scanner.nextInt();System.out.println("請輸入name: ");String name = scanner.next();//1.創(chuàng)建數(shù)據(jù)源對象//向下轉(zhuǎn)型,DataSourceDataSource dataSource = new MysqlDataSource();((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java?characterEncoding=utf8&useSSL=false");((MysqlDataSource) dataSource).setUser("root");((MysqlDataSource) dataSource).setPassword("jqka");/*MysqlDataSource mysqlDataSource = new MysqlDataSource();mysqlDataSource.setUrl("jdbc:mysql://127.0.0.1:3306/java112?characterEncoding=utf8&useSSL=false");mysqlDataSource.setUser("root");mysqlDataSource.setPassword("jqka");*///2.和數(shù)據(jù)庫服務(wù)器建立連接Connection connection = dataSource.getConnection();//3.程序構(gòu)造MySQL語句//String sql = "insert into student values(2,'李四')";String sql = "insert into student values(?,?)";PreparedStatement statement = connection.prepareStatement(sql);statement.setInt(1,id);statement.setString(2,name);//4.把sql語句傳到服務(wù)器上執(zhí)行int n = statement.executeUpdate();System.out.println(n);//5.釋放上述資源statement.close();connection.close();}
}

?具體操作

插入刪除修改操作都是相似的,改語句內(nèi)容即可

//插入數(shù)據(jù)
String sql = "insert into student values(2,'李四')";
//刪除id = 1的數(shù)據(jù)
String sql = "delete from student where id = 1";
//修改id = 2的name為張三
String sql = "update student set name = '張三' where id = 2";//傳送sql語句到服務(wù)器上
int n = statement.executeUpdate();

select操作有所差異

  1. statement對象使用的方法為executeQuery()
  2. 使用該方法后返回的結(jié)果是一個結(jié)果集,需要用ResultSet來接收
  3. ResultSet需要單獨進行釋放
//查表
String sql = "select * from student";
PreparedStatement statement = connection.prepareStatement(sql);//接受的是一個結(jié)果集合
ResultSet resultSet = statement.executeQuery();//遍歷
while (resultSet.next()) {System.out.println(resultSet.getInt("id"));System.out.println(resultSet.getString("name"));
}resultSet.close();

說明:通過ResultSet表示查詢結(jié)果的臨時表~~
代碼中使用的時候可以當做"集合類"來使用,可以進行遍歷
?

總結(jié)兩種執(zhí)行SQL的方法

executeQuery() 方法執(zhí)行后返回單個結(jié)果集的,通常用于select語句

executeUpdate()方法返回值是一個整數(shù),指示受影響的行數(shù),通常用于update、insert、delete 語句

6.JDBC常用接口和類

(1)JDBC API

在Java JDBC編程中對數(shù)據(jù)庫的操作均使用JDK自帶的API統(tǒng)一處理,通常與特定數(shù)據(jù)庫的驅(qū)動類是完全 解耦的。所以掌握Java JDBC API (位于 java.sql 包下) 即可掌握Java數(shù)據(jù)庫編程。

(2)數(shù)據(jù)庫連接Connection

Connection接口實現(xiàn)類由數(shù)據(jù)庫提供,獲取Connection對象通常有兩種方式:

  1. 通過DriverManager(驅(qū)動管理類)的靜態(tài)方法獲取:
    // 加載JDBC驅(qū)動程序
    Class.forName("com.mysql.jdbc.Driver");
    // 創(chuàng)建數(shù)據(jù)庫連接
    Connection connection = DriverManager.getConnection(url);

  2. 一種是通過DataSource(數(shù)據(jù)源)對象獲取。實際應(yīng)用中會使用DataSource對象。
    ?

    DataSource ds = new MysqlDataSource();
    ((MysqlDataSource) ds).setUrl("jdbc:mysql://localhost:3306/test");
    ((MysqlDataSource) ds).setUser("root");
    ((MysqlDataSource) ds).setPassword("jqka");
    Connection connection = ds.getConnection();

    區(qū)別:
    1. DriverManager類來獲取的Connection連接,是無法重復(fù)利用的,每次使用完以后釋放資源 時,通過connection.close()都是關(guān)閉物理連接。
    2. DataSource提供連接池的支持。連接池在初始化時將創(chuàng)建一定數(shù)量的數(shù)據(jù)庫連接,這些連接 是可以復(fù)用的,每次使用完數(shù)據(jù)庫連接,釋放資源調(diào)用connection.close()都是將 Conncetion連接對象回收。

(2)Statement對象

Statement對象主要是將SQL語句發(fā)送到數(shù)據(jù)庫中。JDBC API中主要提供了三種Statement對象。

實際開發(fā)中最常用的是PreparedStatement對象:

http://www.risenshineclean.com/news/53269.html

相關(guān)文章:

  • 百中搜網(wǎng)站建設(shè)百度我的訂單
  • 個人建網(wǎng)站今日頭條關(guān)鍵詞排名優(yōu)化
  • 外貿(mào)網(wǎng)站運營怎么做百度手機端排名如何優(yōu)化
  • 濟寧萬達網(wǎng)站建設(shè)合肥網(wǎng)站推廣公司
  • 主要怎么學(xué)的呢seo網(wǎng)站建設(shè)是什么意思
  • python做公司網(wǎng)站人工智能培訓(xùn)心得
  • 城鄉(xiāng)建設(shè)部網(wǎng)站首頁甲級網(wǎng)站搜索優(yōu)化價格
  • 濟南網(wǎng)站建設(shè)凡科seo主要優(yōu)化
  • 安徽建設(shè)監(jiān)理協(xié)會網(wǎng)站seo有哪些網(wǎng)站
  • 模板網(wǎng)站制作時間百度指數(shù)分析大數(shù)據(jù)
  • ps做網(wǎng)站效果圖尺寸如何網(wǎng)站建設(shè)軟件
  • 銀川制作網(wǎng)站百度熱門排行榜
  • 建站如何掙錢seo教程網(wǎng)站優(yōu)化
  • 簡單網(wǎng)站搭建媒介星軟文平臺
  • 網(wǎng)站建設(shè) 后期維護抖音關(guān)鍵詞排名軟件
  • 網(wǎng)站怎么做懸浮圖片bing搜索引擎入口
  • 備案號網(wǎng)站下邊優(yōu)化網(wǎng)站收費標準
  • 網(wǎng)站怎么做視頻教程上海十大公關(guān)公司排名
  • wordpress加速r網(wǎng)站搜索優(yōu)化公司
  • 網(wǎng)站開發(fā)專業(yè)職稱有哪些武漢網(wǎng)絡(luò)推廣公司排名
  • 班級網(wǎng)站設(shè)計模板域名收錄查詢工具
  • 專業(yè)做網(wǎng)站關(guān)鍵詞排名下掉長尾關(guān)鍵詞是什么意思
  • 在家做兼職官方網(wǎng)站平臺輿情信息網(wǎng)
  • php網(wǎng)站開發(fā)技術(shù)文檔廣告聯(lián)盟怎么賺錢
  • 做app網(wǎng)站有哪些功能怎么做ppt
  • 紹興專業(yè)做網(wǎng)站的公司蘇州seo按天扣費
  • 網(wǎng)站 被攻擊_主業(yè)篡改 被黑了 織夢做的站市場調(diào)研
  • 網(wǎng)站建設(shè)可以幫助花店怎么樣百度投訴中心24人工客服電話
  • 大學(xué)生實訓(xùn)網(wǎng)站建設(shè)心得關(guān)鍵詞查詢
  • 相親網(wǎng)站做期貨現(xiàn)貨貴金屬的人近期國內(nèi)新聞?wù)?/a>