java之JDBC

Java之JDBCjava

 

今天我學習了JDBC中一部分知識mysql

下面是我對今天學習JDBC部分知識的總結:sql

 

JDBC的全稱:Java Database Connectivity數據庫

 

意爲:Java 數據庫 鏈接安全

 

這是一種執行SQL語句的API學習

 

數據庫廠商本身實現了JDBC這套接口,咱們稱之爲 數據庫驅動code

 

在java中orm

 

一、咱們首先須要裝載驅動類.以mysql爲例,代碼以下server

 

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

 

注意,咱們必須先導入JDBC驅動jar包,jdbc驅動jar包能夠在nysql官網下載,爲了方便,這裏提供了連接

 

https://dev.mysql.com/downloads/connector/j/

 

選擇Platform Independent 而後選擇下載。例如ZIP形式的下載。

 

而後將jar包導入到項目中便可

 

注意,老版的加載驅動類是com.mysql.jdbc.Driver,可是,我使用這段代碼的時候,編譯器報錯了,並建議我換成新的驅動"com.mysql.cj.jdbc.Driver" 我認爲這可能與個人jar包版本有關(個人jar包版本是8.0.11)

 

二、創建鏈接

 

Connection conn=null;

 

conn=DriverManager.getConnection(字符串參數1,字符串參數2,字符串參數3);

 

其中,字符串參數3是你的數據庫登陸密碼

 

字符串參數2是數據庫用戶名

 

字符串參數1是數據庫的位置

 

老版的是這樣(以本機爲例)

 

字符串參數1:"jdbc:mysql://localhost:3306/數據庫名";

 

字符串參數2:"root";

 

字符串參數3:"密碼";

 

一樣,我使用這段代碼,編譯器也報錯了,須要我設置時區等。

 

所以,將字符串參數1替換爲:"jdbc:mysql://localhost:3306/mysql2?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&useSSL=false";

 

編譯經過。

 

三、創建鏈接以後,就能夠進行相關SQL語句注入了

 

Statement是一個接口,prepareStatement是Statement的一個子接口。因爲Statement存在SQL注入的安全問題以及效率問題,所以咱們更經常使用的是PrepareStatement接口。

 

代碼以下

 

PrepareStatement ps=conn.prepareStatement(sql語句);

 

例如

 

/"假設已知有一張mytable1表,字段爲age,類型爲int 字段爲Date1,類型爲Date

 

*/

 

String sql1="insert into mytable1(age,Date1) values(?,?)";

 

//其中的?叫作佔位符。

 

PrepareStatement ps=conn.prepareStatement(sql1);

 

下面,經過調用一些方法來替換佔位符

 

ps.setInt(1,18);

 

ps.setDate(2,new java.sql.Date(System.currentTimeMillis()));

 

//這裏的Date使用的是java.sql包的

 

//其中setXXX方法中的第一個參數表明的是問號的位置。

 

/*其實,若是不知道原表中字段的類型,也可使用setObject(Index,Object obj)這個方法。簡單粗暴*/

 

接着,調用ps.executeUpdate()方法執行那段插入語句。這個executeUpdate()方法運用於insert/delete/update語句的執行。該方法返回影響的行數,因此這裏接收一下

 

int row=ps.executeUpdate();

 

這樣就完成了插入操做。

 

若是咱們使用的是查詢操做。如

 

String sql2="select * from mytable1";

 

PrepareStatement ps2=conn.prepareStatement(sql2);

 

而後調用executeQuery()方法執行查詢語句

 

注意,該方法返回一個ResultSet結果集的實現類。 ResultSet是一個接口。

 

ResultSet set =ps2.executeQuery();

 

咱們能夠調用next()方法。這個方法判斷是否有下一個,返回布爾值。相似於遊標

 

另外,還有getInt(int colum) getDouble(int colum)方法等等,其中colum是列數。這要求咱們必須事先知道所查詢的全部列 ,某一列在第幾列,是什麼類型。

 

咱們可使用以下方法遍歷

 

while(set.next()){

 

System.out.println(set.getInt(列數)+"****"+set.getDouble(列數));

 

}

 

最後,是關閉操做

 

關閉的順序應該是(若是有的話)

 

ResultSet-->Statment-->Connection這樣的關閉順序。且必須分開寫,也就是三個try catch語句

 

/*以上內容均爲本人學習後總結,全爲手打,不免有些缺漏和錯誤,歡迎指正或給出建議,謝謝*/

相關文章
相關標籤/搜索