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

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

沈陽大十字街附近做網(wǎng)站公司百度怎么推廣網(wǎng)站

沈陽大十字街附近做網(wǎng)站公司,百度怎么推廣網(wǎng)站,網(wǎng)站建設專員工作,美顏秘籍網(wǎng)站建設第一章 JDBC概述 之前我們學習了JavaSE,編寫了Java程序,數(shù)據(jù)保存在變量、數(shù)組、集合等中,無法持久化,后來學習了IO流可以將數(shù)據(jù)寫入文件,但不方便管理數(shù)據(jù)以及維護數(shù)據(jù)的關系; 后來我們學習了數(shù)據(jù)庫管理軟件MySQL,可以方便的管理數(shù)據(jù)1。 那么如何將它倆結(jié)合起來呢?即…

第一章 JDBC概述

之前我們學習了JavaSE,編寫了Java程序,數(shù)據(jù)保存在變量、數(shù)組、集合等中,無法持久化,后來學習了IO流可以將數(shù)據(jù)寫入文件,但不方便管理數(shù)據(jù)以及維護數(shù)據(jù)的關系;

后來我們學習了數(shù)據(jù)庫管理軟件MySQL,可以方便的管理數(shù)據(jù)1。

那么如何將它倆結(jié)合起來呢?即Java程序<==>MySQL,實現(xiàn)數(shù)據(jù)的存儲和處理。

答案:使用JDBC技術,后期可以使用MyBatis等持久層框架(底層仍然使用了JDBC)。

1.1 JDBC概述

JDBC:Java Database Connectivity,它是代表一組獨立于任何數(shù)據(jù)庫管理系統(tǒng)(DBMS)的API,聲明在java.sql與javax.sql包中,是SUN(現(xiàn)在Oracle)提供的一組接口規(guī)范。由各個數(shù)據(jù)庫廠商來提供實現(xiàn)類,這些實現(xiàn)類的集合構(gòu)成了數(shù)據(jù)庫驅(qū)動jar。

即JDBC技術包含兩個部分:

(1)java.sql包和javax.sql包中的API

因為為了項目代碼的可移植性,可維護性,SUN公司從最初就制定了Java程序連接各種數(shù)據(jù)庫的統(tǒng)一接口規(guī)范。這樣的話,不管是連接哪一種DBMS軟件,Java代碼可以保持一致性。

(2)各個數(shù)據(jù)庫廠商提供的jar

因為各個數(shù)據(jù)庫廠商的DBMS軟件各有不同,那么內(nèi)部如何通過sql實現(xiàn)增、刪、改、查等管理數(shù)據(jù),只有這個數(shù)據(jù)庫廠商自己更清楚,因此把接口規(guī)范的實現(xiàn)交給各個數(shù)據(jù)庫廠商自己實現(xiàn)。


?
/*
一、JDBC的概述
1、之前學習了Java,又學習了MySQL數(shù)據(jù)庫
JDBC 把  Java程序 和 MySQL數(shù)據(jù)庫連起來,Java程序是負責數(shù)據(jù)的輸入,業(yè)務的處理,數(shù)據(jù)的顯示,MySQL負責數(shù)據(jù)的存儲和管理。
?
2、JDBC:Java Database Connectivity
JDBC = JDK核心類庫中的一套API(接口+部分工具類) + 數(shù)據(jù)庫廠商提供的驅(qū)動jar
?
?
Java程序不僅僅能夠連接MySQL數(shù)據(jù)庫,可以連接很多數(shù)據(jù)庫(Oracle,SQL Server,DB2,...)。
這就有一個問題?   數(shù)據(jù)庫不同,它們的操作方式會有所不同,因為它們的底層實現(xiàn)方式,實現(xiàn)的語言等都是不同的。   那么Java去連接不同的數(shù)據(jù)庫時,就會有不同的API。這樣的話,就會導致:   (1)程序員的學習成本增加   (2)如果發(fā)生數(shù)據(jù)庫遷移,Java代碼就需要“重寫”   如果是這樣的話,就非常麻煩,可移植性、可維護性等非常差。
?
SUN公司(現(xiàn)在Oracle)就說,必須統(tǒng)一一套API,可以操作各種數(shù)據(jù)庫。但是SUN公司又不同知道所有數(shù)據(jù)庫內(nèi)部是如何實現(xiàn)的,
也無法要求所有的數(shù)據(jù)庫廠商按照統(tǒng)一的標準來開發(fā)他們的數(shù)據(jù)庫軟件。
SUN公司(現(xiàn)在Oracle)就設計了一套接口 + 部分類。然后各個數(shù)據(jù)庫廠商,來提供這些接口的實現(xiàn)類。
?
==>Java程序中面向接口編程,在程序運行時,又需要引入這些接口的實現(xiàn)類,這些實現(xiàn)類就是數(shù)據(jù)庫驅(qū)動jar。*/
public class TestJDBC {
}
?

1.2 Java程序連接MySQL數(shù)據(jù)庫

1.2.1 引入mysql驅(qū)動jar

方式一:單獨某個模塊使用mysql驅(qū)動
(1)在模塊路徑下建一個文件夾“jdbclibs”,把mysql的驅(qū)動jar放到里面
MySQL5.7:mysql-connector-java-5.1.36-bin.jar
MySQL8.0:mysql-connector-java-8.0.19.jar
(2)在jdbclibs文件夾上右鍵-->Add as Library...
(3)填寫庫名稱、選擇這個庫應用范圍(模塊)-->選擇使用的具體模塊

方式二:項目下多個模塊使用mysql驅(qū)動
(1)在項目路徑下建一個文件夾“jdbclibrary”,把mysql的驅(qū)動jar放到里面
mysql-connector-java-5.1.36-bin.jar
MySQL8.0:mysql-connector-java-8.0.19.jar
(2)項目設置-->libraries--> + ->java-->文件夾“jdbclibs”
(3)選擇需要這個jar的模塊
項目設置-->modules-->模塊名-->dependencies--> + - >library->Java -> 庫

后期其他模塊也要使用mysql驅(qū)動,可以直接添加項目的jdbclibrary庫即可:

方式三:使用Maven倉庫(后期大家學習) - 最多?。?!

1.2.2 Java代碼連接MySQL數(shù)據(jù)庫

/*步驟:
1、模塊添加了依賴的mysql驅(qū)動相關庫
?
2、在內(nèi)存中加載驅(qū)動類(可選)       更早版本mysql驅(qū)動類:org.gjt.mm.mysql.Driver       最近版本:com.mysql.jdbc.Driver       MySQL8.0版本:com.mysql.cj.jdbc.Driver //新版的mysql驅(qū)動jar可以省略這步,舊版的mysql驅(qū)動jar必須加這一步。 // 因為新版mysql驅(qū)動jar包下有一個META-INF/services/java.sql.Driver文件 //里面有填寫mysql驅(qū)動類的全名稱,DriverManager會自動讀取這個文件,并加載對應的驅(qū)動類 //后期使用數(shù)據(jù)庫連接池,或者MyBatis等框架時,在配置文件中加這個驅(qū)動類的配置即可Class.forName("com.mysql.cj.jdbc.Driver"); 
?
3、連接數(shù)據(jù)庫:通過DriverManager工具類獲取數(shù)據(jù)庫連接Connection的對象。
此時的Java程序是MySQL的一個客戶端
連接數(shù)據(jù)庫:    MySQL服務器主機的IP地址:    端口號    用戶名    密碼
網(wǎng)址:http://www.haogu.com
?   String url = "jdbc:mysql://localhost:3306/test?serverTimezoneAsia/Shanghai";   Connection conn = DriverManager.getConnection(url, "root", "123456");      MySQL8使用時,url需要加參數(shù):serverTimezone=Asia/Shanghai,否則會報錯:   Exception in thread "main" java.sql.SQLException: The server time zone value '?й???????' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support.
?
?
4、斷開連接:使用close方法。*/

?
import java.sql.Connection;
import java.sql.DriverManager;
?
public class TestJDBC {   public static void main(String[] args)throws Exception {       Class.forName("com.mysql.cj.jdbc.Driver");       Connection conn =  DriverManager.getConnection("jdbc:mysql://localhost:3306/haogu?serverTimezone=Asia/Shanghai","root","123456");       System.out.println("conn = " + conn);       conn.close();   }
}

1.3 實現(xiàn)增刪改查

/*步驟:
1、模塊添加了依賴的mysql驅(qū)動相關庫
?
2、在內(nèi)存中加載驅(qū)動類(可選)Class.forName("com.mysql.cj.jdbc.Driver"); 
?
3、連接數(shù)據(jù)庫
通過DriverManager工具類獲取數(shù)據(jù)庫連接Connection的對象。   String url = "jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai";   Connection conn = DriverManager.getConnection(url, "root", "123456");
?4、操作數(shù)據(jù)庫
(1)通過Connection對象獲取Statement或PreparedStatement對象
(2)通過Statement或PreparedStatement對象執(zhí)行sql
執(zhí)行增、刪、改:int executeUpate()
執(zhí)行查詢:ResultSet executeQuery()
(3)如果服務器有查詢結(jié)果返回,需要用ResultSet接收
遍歷結(jié)果集的方法:
boolean next():判斷是否還有下一行
getString(字段名或序號),getInt(字段名或序號),getObject(字段名或序號)
?
5、釋放資源(close)*/

1.3.1 添加數(shù)據(jù)


?
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
?
/*
用JDBC實現(xiàn)添加一條記錄到haogu數(shù)據(jù)庫的t_department表中。
?
mysql> desc t_department;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| did         | int          | NO   | PRI | NULL    | auto_increment |
| dname       | varchar(20)  | NO   | UNI | NULL    |                |
| description | varchar(200) | YES  |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)
?
?
mysql> select * from t_department;
+-----+--------+------------------+
| did | dname  | description      |
+-----+--------+------------------+
|   1 | 研發(fā)部 | 負責研發(fā)工作     |
|   2 | 人事部 | 負責人事管理工作 |
|   3 | 市場部 | 負責市場推廣工作 |
|   4 | 財務部 | 負責財務管理工作 |
|   5 | 后勤部 | 負責后勤保障工作 |
|   6 | 測試部 | 負責測試工作     |
+-----+--------+------------------+
6 rows in set (0.00 sec)
?
步驟:
1、一個項目引入一次數(shù)據(jù)庫驅(qū)動jar就可以
2、建立數(shù)據(jù)庫連接
(1)加載驅(qū)動類:通過Class類的forName方法注冊驅(qū)動
(2)獲取數(shù)據(jù)庫連接
通過DriverManager類的靜態(tài)方法獲取數(shù)據(jù)庫連接對象
3、通過數(shù)據(jù)庫連接對象獲取Statement或PreparedStatement對象,用來執(zhí)行sql
4、通過Statement或PreparedStatement對象調(diào)用
(1)int executeUpdate():執(zhí)行insert,update,delete等更新數(shù)據(jù)庫數(shù)據(jù)的sql
?
5、關閉,釋放各種資源*/
public class TestInsert {   public static void main(String[] args)throws Exception {       //把驅(qū)動類加載到內(nèi)存中       Class.forName("com.mysql.cj.jdbc.Driver");       //B:獲取數(shù)據(jù)庫連接對象       String url = "jdbc:mysql://localhost:3306/haogu?serverTimezone=Asia/Shanghai";       Connection connection = DriverManager.getConnection(url,"root","123456");       //Connection   ==> 網(wǎng)絡編程的Socket
?       String sql = "insert into t_department values(null,'測試數(shù)據(jù)部門','測試數(shù)據(jù)部門簡介')";//發(fā)給服務器的sql       PreparedStatement pst = connection.prepareStatement(sql);       //PreparedStatement ==> IO流  網(wǎng)絡編程的socket.getOutputStream()發(fā)生數(shù)據(jù)用的       int len = pst.executeUpdate();       //返回sql影響的記錄數(shù)       System.out.println(len>0 ? "添加成功" : "添加失敗");
?       pst.close();       connection.close();       /*
mysql> select * from t_department;
+-----+--------------+------------------+
| did | dname        | description      |
+-----+--------------+------------------+
|   1 | 研發(fā)部       | 負責研發(fā)工作     |
|   2 | 人事部       | 負責人事管理工作 |
|   3 | 市場部       | 負責市場推廣工作 |
|   4 | 財務部       | 負責財務管理工作 |
|   5 | 后勤部       | 負責后勤保障工作 |
|   6 | 測試部       | 負責測試工作     |
|   7 | 測試數(shù)據(jù)部門 | 測試數(shù)據(jù)部門簡介 |
+-----+--------------+------------------+
7 rows in set (0.00 sec)        */   }
}
?

1.3.2 修改數(shù)據(jù)


?
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
?
public class TestUpdate {   public static void main(String[] args)throws Exception {       //把驅(qū)動類加載到內(nèi)存中       Class.forName("com.mysql.cj.jdbc.Driver");       //B:獲取數(shù)據(jù)庫連接對象       String url = "jdbc:mysql://localhost:3306/haogu?serverTimezone=Asia/Shanghai";       Connection connection = DriverManager.getConnection(url, "root", "123456");       //Connection   ==> 網(wǎng)絡編程的Socket
?       String sql = "update t_department set description = 'xx' where did = 7";//發(fā)給服務器的sql       PreparedStatement pst = connection.prepareStatement(sql);       //PreparedStatement ==> IO流  網(wǎng)絡編程的socket.getOutputStream()發(fā)生數(shù)據(jù)用的       int len = pst.executeUpdate();       //返回sql影響的記錄數(shù)       System.out.println(len > 0 ? "修改成功" : "修改失敗");
?       pst.close();       connection.close();   }
}
/*
mysql> select * from t_department;
+-----+--------------+------------------+
| did | dname        | description      |
+-----+--------------+------------------+
|   1 | 研發(fā)部       | 負責研發(fā)工作     |
|   2 | 人事部       | 負責人事管理工作 |
|   3 | 市場部       | 負責市場推廣工作 |
|   4 | 財務部       | 負責財務管理工作 |
|   5 | 后勤部       | 負責后勤保障工作 |
|   6 | 測試部       | 負責測試工作     |
|   7 | 測試數(shù)據(jù)部門 | xx               |
+-----+--------------+------------------+
7 rows in set (0.00 sec)*/

1.3.3 刪除數(shù)據(jù)


?
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
?
public class TestDelete {   public static void main(String[] args)throws Exception {       //把驅(qū)動類加載到內(nèi)存中       Class.forName("com.mysql.cj.jdbc.Driver");       //B:獲取數(shù)據(jù)庫連接對象       String url = "jdbc:mysql://localhost:3306/haogu?serverTimezone=Asia/Shanghai";       Connection connection = DriverManager.getConnection(url, "root", "123456");       //Connection   ==> 網(wǎng)絡編程的Socket
?       String sql = "delete from t_department where did = 7";//發(fā)給服務器的sql       PreparedStatement pst = connection.prepareStatement(sql);       //PreparedStatement ==> IO流  網(wǎng)絡編程的socket.getOutputStream()發(fā)生數(shù)據(jù)用的       int len = pst.executeUpdate();       //返回sql影響的記錄數(shù)       System.out.println(len > 0 ? "刪除成功" : "刪除失敗");
?       pst.close();       connection.close();   }
}
/*
mysql> select * from t_department;
+-----+--------+------------------+
| did | dname  | description      |
+-----+--------+------------------+
|   1 | 研發(fā)部 | 負責研發(fā)工作     |
|   2 | 人事部 | 負責人事管理工作 |
|   3 | 市場部 | 負責市場推廣工作 |
|   4 | 財務部 | 負責財務管理工作 |
|   5 | 后勤部 | 負責后勤保障工作 |
|   6 | 測試部 | 負責測試工作     |
+-----+--------+------------------+
6 rows in set (0.00 sec)*/

1.3.4 查詢數(shù)據(jù)


?
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
?
/*
步驟:
1、一個項目引入一次數(shù)據(jù)庫驅(qū)動jar就可以
2、建立數(shù)據(jù)庫連接
(1)加載驅(qū)動類:通過Class類的forName方法注冊驅(qū)動
(2)獲取數(shù)據(jù)庫連接
通過DriverManager類的靜態(tài)方法獲取數(shù)據(jù)庫連接對象
3、通過數(shù)據(jù)庫連接對象獲取Statement或PreparedStatement對象,用來執(zhí)行sql
4、通過Statement或PreparedStatement對象調(diào)用
(1)int executeUpdate():執(zhí)行insert,update,delete等更新數(shù)據(jù)庫數(shù)據(jù)的sql
(2)ResultSet executeQuery():執(zhí)行select查詢的sql,返回一個結(jié)果集
(3)boolean execute():可以用來執(zhí)行DDL語句
?
?
遍歷結(jié)果集ResultSet的方法:
boolean next():判斷是否還有下一行
getString(字段名或序號),getInt(字段名或序號),getObject(字段名或序號)
?
5、關閉,釋放各種資源*/
public class TestSelect {   public static void main(String[] args)throws Exception {       //把驅(qū)動類加載到內(nèi)存中       Class.
http://www.risenshineclean.com/news/59196.html

相關文章:

  • 山東省兩學一做網(wǎng)站seopc流量排行榜企業(yè)
  • 邢臺做網(wǎng)站的價格成都搜索優(yōu)化排名公司
  • 湖里區(qū)建設局網(wǎng)站無錫網(wǎng)絡優(yōu)化推廣公司
  • php如何做局域網(wǎng)的網(wǎng)站今日頭條指數(shù)查詢
  • 自己可以進行網(wǎng)站建設嗎上海知名的seo推廣咨詢
  • 全國疫情最新中高風險地區(qū)名單青島百度seo代理
  • 信息設計網(wǎng)站百度網(wǎng)盤服務電話6988
  • 東莞外貿(mào)優(yōu)化公司東莞搜索優(yōu)化十年樂云seo
  • 網(wǎng)站建設寫代碼自己怎么創(chuàng)業(yè)附近哪里有計算機培訓班
  • 網(wǎng)站建設中最重要的南寧百度推廣代理商
  • 網(wǎng)站seoapp阿亮seo技術
  • 甘肅省城鄉(xiāng)和建設廳網(wǎng)站首頁seo優(yōu)化方法網(wǎng)站快速排名推廣渠道
  • php在動態(tài)網(wǎng)站開發(fā)深圳網(wǎng)絡公司推廣平臺
  • 網(wǎng)站建設信息模板下載在哪里可以做百度推廣
  • 做網(wǎng)站的上市公司海外發(fā)布新聞
  • 番禺網(wǎng)站建設優(yōu)化網(wǎng)站產(chǎn)品怎么優(yōu)化
  • 平潭城鄉(xiāng)住房建設廳網(wǎng)站如何推廣小程序
  • 靈犀科技網(wǎng)站開發(fā)精準營銷系統(tǒng)價值
  • 做網(wǎng)站開發(fā)的提成多少錢seo推廣培訓費用
  • 怎么做網(wǎng)站結(jié)構(gòu)圖seo公司彼億營銷
  • 臨平網(wǎng)站建設東莞專業(yè)網(wǎng)站推廣工具
  • seo網(wǎng)站開發(fā)注意事項鄭州整站網(wǎng)站優(yōu)化
  • 網(wǎng)站打不開顯示asp網(wǎng)站設計規(guī)劃
  • 做房地產(chǎn)資質(zhì)是什么網(wǎng)站查seo褲子的關鍵詞首頁排名有哪些
  • 建設公積金網(wǎng)站蘇州做網(wǎng)站的專業(yè)公司
  • 廣州市網(wǎng)站建設制作費用站長全網(wǎng)指數(shù)查詢
  • 2017自己做網(wǎng)站的趨勢seo站長
  • 學做網(wǎng)站網(wǎng)百度網(wǎng)訊科技有限公司官網(wǎng)
  • 長沙企業(yè)做網(wǎng)站百度一下你就知道官網(wǎng)網(wǎng)址
  • 如何制作香水 簡單seo交流論壇seo顧問