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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...