JDBC基礎

来源:http://www.cnblogs.com/apolloqq/archive/2016/11/04/6029057.html
-Advertisement-
Play Games

JDBC ___ 補充:Jabc相關類介紹 1.Connection類 a.用於代表資料庫的鏈接,客戶端與資料庫所有交互都是通過connection對象完成的。 b.主要方法: createStatement():創建向資料庫發送sql的statement對象。 prepareStatement(s ...


JDBC


補充:Jabc相關類介紹

1.Connection類

a.用於代表資料庫的鏈接,客戶端與資料庫所有交互都是通過connection對象完成的。
b.主要方法:
    createStatement():創建向資料庫發送sql的statement對象。
    prepareStatement(sql) :創建向資料庫發送預編譯sql的PrepareSatement對象。
    prepareCall(sql):創建執行存儲過程的callableStatement對象。
    setAutoCommit(boolean autoCommit):設置事務是否自動提交。
    commit() :在鏈接上提交事務。
    rollback() :在此鏈接上回滾事務。

2.Statement類

a.Statement對象用於向資料庫發送SQL語句。
b.主要方法:
    executeQuery(String sql) :用於向數據發送查詢語句。
    executeUpdate(String sql):用於向資料庫發送insert、update或delete語句
    execute(String sql):用於向資料庫發送任意sql語句
    addBatch(String sql) :把多條sql語句放到一個批處理中。
    executeBatch():向資料庫發送一批sql語句執行。

3.ResultSet類

a.ResultSet用於代表Sql語句的執行結果。
b.Resultset封裝執行結果時,採用的類似於表格的方式。
c.ResultSet 對象維護了一個指向表格數據行的游標,初始的時候,游標在第一行之前,調用ResultSet.next() 方法,可以使游標指向具體的數據行,進行調用方法獲取該行的數據。
d.主要方法:
    獲取任意類型的數據:
        getObject(int index)
        getObject(string columnName)
    獲取指定類型的數據:
        getString(int index)
        getString(String columnName)
    對結果集進行回滾:
        next():移動到下一行
        Previous():移動到前一行
        absolute(int row):移動到指定行
        beforeFirst():移動resultSet的最前面。
        afterLast() :移動到resultSet的最後面。

一、JAVA與Mysql連接

1.載入驅動程式:

Class.forName("com.jdbc.mysql.Driver");
(須導入jar包)

2.獲得資料庫連接:

Connection conn=DriverManager.getConnection(url,usr,pw);
//url:資料庫鏈接
//user&password:資料庫登錄用戶及密碼

3.資料庫操作:

//通過Connetion對象獲得Statement對象
Statement stmt=conn.CreateStatment();
//通過Statement對象獲得ResultSet對象
ResultSet rs1=stmt.excuteQquery("sql查詢語句");
ResultSet rs2=stmt.excuteUpdate("sql改動語句");

補充: 一般多用PreparedStatement,預編譯的,效率高,更清晰

二、JDBC調用存儲過程

1.存儲過程定義及調用:

2.調用類型:

a.JDBC調用無參數的存儲過程
a.JDBC調用帶輸入參數的存儲過程
a.JDBC調用帶輸出參數的存儲過程
a.JDBC調用帶輸入輸出參數的存儲過程

三、JDBC事務管理

1.事務管理:

a.一系列操作打包在一起執行,是一個邏輯單元
b.原子性:事務是一個完整的操作
c.一致性:事務完成時,數據必須處於一致狀態
d.隔離性:對資料庫操作的併發事務之間是隔離的
e.永久性:事務完成後對資料庫的修改永久保持

2.JDBC對事務管理的支持:

a.JDBC通過commit()/rollback()來管理事務的操作
b.事務操作預設是自動提交的
c.通過setAutoCommit(false)禁止自動提交

三、JDBC與資料庫連接池

1.資料庫連接池:

a.解決數據連接量大的問題
b.連接池中放一定的Connection,連接滿時讓其他用戶等待
c.開源資料庫連接池:dbcp/c3p0

2.dbcp的使用:

a.導入jar包    
b.建立配置文件 dbcp.properties
c.編寫相關類文件

3.c3po的使用:

a.導入jar包    
b.建立配置文件 c3p0.properties
c.編寫相關類文件

4.dbcp與c3po的比較:

四、相關框架介紹

1.Commons-dbutils:

*****核心介面*****

2.Hibernate:

(1)優缺點

(2)核心介面

a.Session: CRUD操作
b.SessionFactory: 初始化Hibernate
c.Configuaration: 配置及啟動Hibernate
d.Transaction: 事務操作
e.Query/Criteria: 資料庫查詢 

3.Mybatis:

特點

五、JDBC與Tomcat

1、在Web項目的WebRoot目錄下的META-INF目錄創建一個context.xml文件
2、在context.xml文件配置tomcat伺服器的數據源
3、將資料庫的驅動jar文件放置在tomcat的lib文件夾下
4、在獲取資料庫連接的工具類(如jdbcUtils)的靜態代碼塊中獲取JNDI容器中的數據源

1.Context.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <Resource
        name="jdbc/datasource"
        auth="Container"
        type="javax.sql.DataSource"
        username="root"
        password="20114665"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost:3306/jdbc_review"
        maxActive="8"
        maxIdle="4"/>
</Context>

2.獲取DataSource

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
dataSource = (DataSource)envCtx.lookup("jdbc/datasource");

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 介紹 LIST分區和RANGE分區非常的相似,主要區別在於LIST是枚舉值列表的集合,RANGE是連續的區間值的集合。二者在語法方面非常的相似。同樣建議LIST分區列是非null列,否則插入null值如果枚舉列表裡面不存在null值會插入失敗,這點和其它的分區不一樣,RANGE分區會將其作為最小分區 ...
  • 標簽: MongoDB NoSQL MongoDB 存儲引擎和數據模型設計 1. 存儲引擎 1.1 存儲引擎是什麼 1.2 MongoDB中的預設存儲引擎 2. 數據模型設計 2.1 內嵌和引用 2.2 設計原則 A. 1 1 或者 1 (較少) B. 1 (較多) C. 1 (非常多) D. E. ...
  • 1. 概述 最近在ESB項目中,客戶在各個系統之間的服務調用大多都是在oracle存儲過程中進行的,本文就oracle存儲過程調用web service來進行說明。其他主流資料庫,比如mysql和sql service,調用web service的方法這裡就不做介紹了,本文主要用來介紹oracle存 ...
  • 今天在將CSV導入到oracle時,報了下麵的異常: SQL*Loader-522: lfiopn failed for file 後來從MSDN找到了原因,文件夾的許可權不夠。 環境描述:我的導入文件放在WIN7系統桌面上的,該導入文件是從桌面上另外一個成功導入的例子 複製的 。 處理方案:複製到的 ...
  • 使用ES的基本都會使用過head,但是版本升級到5.0後,head插件就不好使了。下麵就看看如何在5.0中啟動Head插件吧! "官方粗略教程" Running with built in server enable cors by adding http.cors.enabled: true in ...
  • 介紹 COLUMN分區是5.5開始引入的分區功能,只有RANGE COLUMN和LIST COLUMN這兩種分區;支持整形、日期、字元串;RANGE和LIST的分區方式非常的相似。 COLUMNS和RANGE和LIST分區的區別 1.針對日期欄位的分區就不需要再使用函數進行轉換了,例如針對date字 ...
  • 說到隊列的話,大家一定不會陌生,但是扯到優先順序隊列的話,還是有一部分同學是不清楚的,可能是不知道怎麼去實現吧,其實呢,,,這東西已 經爛大街了。。。很簡單,用“堆”去實現的,在我們系統中有一個訂單催付的場景,我們客戶的客戶在tmall,taobao下的訂單,taobao會及時將訂單推送給 我們,如果 ...
  • 今天把應用部署到AWS上發現後臺修改內容提交後程式報錯,經過排查發現是更新數據的時候,有張數據表中的一個timestamp類型的欄位預設值變成了"0000-00-00 00:00:00.000000"格式,導致解析失敗造成的。 在mysql該欄位的創建語句如下 因為在本地開發環境測試過,沒有該問題, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...