日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

jdbc mysql api_JDBC Api详解

發布時間:2025/3/12 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jdbc mysql api_JDBC Api详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.什么是JDBC

JDBC(Java Data Base Connectivity,java數據庫連接)是一種用于執行SQL語句的Java API,可以為多種關系數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。JDBC提供了一種基準,據此可以構建更高級的工具和接口,使數據庫開發人員能夠編寫數據庫應用程序。

二.數據庫驅動

JDBC是對數據庫操作的接口抽象,而不同數據庫廠商的數據庫驅動程序則對應JDBC接口實現,通過抽象出JDBC接口,應用程序和實際的數據庫驅動即JDBC實現解耦。

三、常用接口

1.Driver接口

Driver接口由數據庫廠家提供,作為java開發人員,只需要使用Driver接口就可以了。在編程中要連接數據庫,必須先裝載特定廠商的數據庫驅動程序,不同的數據庫有不同的裝載方法。如:

裝載MySql驅動:Class.forName("com.mysql.jdbc.Driver");

裝載Oracle驅動:Class.forName("oracle.jdbc.driver.OracleDriver");

2.Connection接口

Connection與特定數據庫的連接(會話),在連接上下文中執行sql語句并返回結果。DriverManager.getConnection(url,?user,?password)方法建立在JDBC URL中定義的數據庫Connection連接上。

連接MySql數據庫:Connection conn =?DriverManager.getConnection("jdbc:mysql://host:port/database", "user", "password");

連接Oracle數據庫:Connection conn =?DriverManager.getConnection("jdbc:oracle:thin:@host:port:database", "user", "password");

連接SqlServer數據庫:Connection conn =?DriverManager.getConnection("jdbc:microsoft:sqlserver://host:port; DatabaseName=database", "user", "password");

常用方法:

createStatement():創建向數據庫發送sql的statement對象。

prepareStatement(sql) :創建向數據庫發送預編譯sql的PrepareSatement對象。

prepareCall(sql):創建執行存儲過程的callableStatement對象。

setAutoCommit(boolean?autoCommit):設置事務是否自動提交。

commit() :在鏈接上提交事務。

rollback() :在此鏈接上回滾事務。

3.Statement接口

用于執行靜態SQL語句并返回它所生成結果的對象。

三種Statement類:

Statement:由createStatement創建,用于發送簡單的SQL語句(不帶參數)。

PreparedStatement :繼承自Statement接口,由preparedStatement創建,用于發送含有一個或多個參數的SQL語句。PreparedStatement對象比Statement對象的效率更高,并且可以防止SQL注入,所以我們一般都使用PreparedStatement。

CallableStatement:繼承自PreparedStatement接口,由方法prepareCall創建,用于調用存儲過程。

常用Statement方法:

execute(String?sql):運行語句,返回是否有結果集

executeQuery(String?sql):運行select語句,返回ResultSet結果集。

executeUpdate(String?sql):運行insert/update/delete操作,返回更新的行數。

addBatch(String?sql) :把多條sql語句放到一個批處理中。

executeBatch():向數據庫發送一批sql語句執行。

4.ResultSet接口

ResultSet提供檢索不同類型字段的方法,常用的有:

getString(int index)、getString(String columnName):獲得在數據庫里是varchar、char等類型的數據對象。

getFloat(int index)、getFloat(String columnName):獲得在數據庫里是Float類型的數據對象。

getDate(int index)、getDate(String columnName):獲得在數據庫里是Date類型的數據。

getBoolean(int index)、getBoolean(String columnName):獲得在數據庫里是Boolean類型的數據。

getObject(int index)、getObject(String columnName):獲取在數據庫里任意類型的數據。

ResultSet還提供了對結果集進行滾動的方法:

next():移動到下一行

Previous():移動到前一行

absolute(int row):移動到指定行

beforeFirst():移動resultSet的最前面。

afterLast() :移動到resultSet的最后面。

使用后依次關閉對象及連接:ResultSet →?Statement →?Connection

四、使用JDBC的步驟

加載JDBC驅動程序 →?建立數據庫連接Connection →?創建執行SQL的語句Statement →?處理執行結果ResultSet →?釋放資源

1.注冊驅動 (只做一次)

方式一:Class.forName(“com.MySQL.jdbc.Driver”);

推薦這種方式,不會對具體的驅動類產生依賴。

方式二:DriverManager.registerDriver(com.mysql.jdbc.Driver);

會造成DriverManager中產生兩個一樣的驅動,并會對具體的驅動類產生依賴。

2.建立連接

Connection conn = DriverManager.getConnection(url, user, password);

URL用于標識數據庫的位置,通過URL地址告訴JDBC程序連接哪個數據庫,URL的寫法為:

其他參數如:useUnicode=true&characterEncoding=utf8

3.創建執行SQL語句的statement

1 //Statement

2 String id = "5";

3 String sql = "delete from table where id=" + id;

4 Statement st = conn.createStatement();

5 st.executeQuery(sql);

6 //存在sql注入的危險

7 //如果用戶傳入的id為“5 or 1=1”,那么將刪除表中的所有記錄

1 //PreparedStatement 有效的防止sql注入(SQL語句在程序運行前已經進行了預編譯,當運行時動態地把參數傳給PreprareStatement時,即使參數里有敏感字符如 or '1=1'也數據庫會作為一個參數一個字段的屬性值來處理而不會作為一個SQL指令)

2 String sql = “insert into user (name,pwd) values(?,?)”;

3 PreparedStatement ps = conn.preparedStatement(sql);

4 ps.setString(1, “col_value”); //占位符順序從1開始

5 ps.setString(2, “123456”); //也可以使用setObject

6 ps.executeQuery();

4.處理執行結果(ResultSet)

1 ResultSet rs = ps.executeQuery();

2 While(rs.next()){

3 rs.getString(“col_name”);

4 rs.getInt(1);

5 //…

6 }

5.釋放資源

//數據庫連接(Connection)非常耗資源,盡量晚創建,盡量早的釋放

//都要加try catch 以防前面關閉出錯,后面的就不執行了

1 try {

2 if (rs != null) {

3 rs.close();

4 }

5 } catch (SQLException e) {

6 e.printStackTrace();

7 } finally {

8 try {

9 if (st != null) {

10 st.close();

11 }

12 } catch (SQLException e) {

13 e.printStackTrace();

14 } finally {

15 try {

16 if (conn != null) {

17 conn.close();

18 }

19 } catch (SQLException e) {

20 e.printStackTrace();

21 }

22 }

23 }

總結

以上是生活随笔為你收集整理的jdbc mysql api_JDBC Api详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美三级大片 | av草逼| 揉我啊嗯~喷水了h视频 | 久久666| 亚洲欧美日韩天堂 | 日韩一二三四区 | 奇米影视第四色首页 | 免费看欧美黑人毛片 | 男人天堂综合网 | 97国产在线| 国产成人无码久久久精品天美传媒 | 成人免费毛片免费 | 岛国毛片在线观看 | 依依成人av| 黄色一级带 | 欧美精品乱码视频一二专区 | 欧美综合自拍亚洲综合图片区 | 亚洲精品综合久久 | 自拍99| 中文字幕在线免费视频 | 露脸丨91丨九色露脸 | 18禁网站免费无遮挡无码中文 | 69av网站| 色婷婷激情av | 国产性生活网站 | www.成人 | 综合激情网站 | 欧美精品第一区 | 波多野吉衣一区二区 | 久久久噜噜噜久久中文字幕色伊伊 | 婷婷在线网 | 色妞欧美 | 四虎视频国产精品免费 | 性欧美长视频 | 亚洲一区二区高清视频 | 四虎视频国产精品免费入口 | 国产高清第一页 | 亚洲欧美激情小说另类 | 丝袜美腿亚洲综合 | 国产一区二区激情视频 | 91精品国产日韩91久久久久久 | 精品区在线观看 | 涩涩视频在线免费看 | 亚洲黄色片在线观看 | 日韩簧片在线观看 | 亚洲黑丝在线 | 呦呦视频在线观看 | 天天有av| 欧美色呦呦 | 国产56页 | 最新av | 日本不卡一区在线观看 | 蜜臀久久99精品久久久无需会员 | 中文字幕乱码在线 | 在线看片黄 | 久久人人爽人人爽人人片 | 人人澡人人澡 | 成年人免费看视频 | 欧美一a一片一级一片 | 亚洲女优在线观看 | 日本大胆裸体做爰视频 | free国产hd露脸性开放 | 免费av观看 | 国产极品91 | 日日射夜夜 | 加勒比不卡视频 | 国产a大片| 黄色大片日本 | 一区二区三区在线看 | av动漫网站 | 懂色一区二区三区 | 日本欧美在线视频 | 蜜臀精品| 色综合久久av | 国产小视频在线 | 午夜看片福利 | 91在线精品视频 | 亚洲综合视频在线 | 黄色在线观看免费视频 | 日本免费三区 | 成人毛片18女人 | 五月天色站 | 伊人22| 国产一区中文 | 免费污片在线观看 | 人人澡人人爽 | 永久免费未满蜜桃 | 一区二区在线不卡 | 免费中文字幕视频 | 中文字幕第一页av | 黄色污污视频软件 | 18p在线观看 | 国产一线av | 泰坦尼克号3小时49分的观看方法 | 制服.丝袜.亚洲.中文.综合懂色 | 久久天堂视频 | 欧美视频一二区 | 一本高清dvd在线播放 | 亚洲综合大片69999 |