1. 程式人生 > >Java中通過JDBC操作MySQL資料庫

Java中通過JDBC操作MySQL資料庫

JDBC相關的操作
0、JDBC常用類和介面介紹
DriverManager類
DriverManager類用來管理資料庫中的所有驅動程式;是JDBC的管理層,作用於使用者和驅動程式之間,跟蹤可用的驅動程式,並在資料庫的驅動程式之間建立連線。此外,DriverManager類也處理諸如驅動程式登入時間限制及登入和跟蹤資訊的顯示等事務。DriverManager類中的方法都是靜態方法,所以在程式中無須對它進行例項化,直接通過類名就可以呼叫。
DriverManager類的常用方法如下:
setLoginTimeout()設定驅動程式試圖登入到某一資料庫時可以等待的最長時間,以秒為單位; println(String message)將一條訊息列印到當前JDBC日誌流中。
Connection介面


Connection介面代表與特定的資料庫的連線。要對資料表中的資料進行操作,首先要獲取資料庫連線。Connection例項就像在應用程式與資料庫之間開通了一條渠道。可以通過DriverManager類的getConnection()方法獲取Connection例項。
Connection介面的常用方法如下:
createStatement()建立Statement物件
createStatement(int resultSetType,int resultSetConcurrency) 建立一個Statement物件,該物件將生成具有給定型別、併發性和可儲存性的ResultSet物件
prepareStatement()建立預處理物件PreparedStatement
isReadOnly()檢視當前Connection物件的讀取模式是否是隻讀形式
commit()使所有上一次提交、回滾後進行的更改成為持久更改,並釋放此Connection物件當前持有的所有資料庫鎖
roolback()取消在當前事務中進行的所有更改,並釋放此Connection物件當前持有的所有資料庫鎖;
close()立即釋放此Connection物件的資料庫和JDBC資源,而不是等待他們被自動釋放。
Statement介面

Statement介面用於建立向資料庫中傳遞SQL語句的物件,該介面提供了一些方法可以實現對資料庫的常用操作。
Statement介面的常用方法如下:
execute(String sql) 執行靜態的SELECT語句,該語句可能返回多個結果集
learBatch() 清空此Statement物件的當前SQL命令列表
executeBatch() 將一批命令提交給資料庫來執行,如果全部命令執行成功,則返回更新計陣列成的陣列。陣列元素的排序與SQL語句的新增順序對應
executeUpdate() 執行給定SQL語句,該語句可以為INSERT、UPDATE或DELETE語句
addBatch(String sql) 將給定的SQL命令新增到此Statement物件的當前命令列表中。如果驅動程式不支援批量處理將丟擲異常
close() 釋放Statement例項佔用的資料庫和JDBC資源
PreparedStatement介面

PreparedStatement介面繼承Statement,用於執行動態的SQL語句,通過PreparedStatement例項執行的SQL語句,將被預編譯並儲存到PreparedStatement例項中,從而可以反覆地執行該SQL語句。
PreparedStatement介面的常用方法如下:
execute() 在此PreparedStatement物件中執行SQL語句,該語句可以是任何型別的SQL語句 executeQuery() 在此PreparedStatement物件中執行SQL查詢語句,返回結果為查詢結果集ResultSet物件
executeUpdate() 在此PreparedStatement物件中執行SQL語句,該SQL語句必須是一個INSERT、UPDATE、DELETE語句,或者是沒有返回值的DDL語句
setByte(int pIndex, byte bt) 將引數pIndex位置上設定為給定的byte型引數bt
setDouble(int pIndex, double dou) 將引數pIndex位置上設定為給定的double型引數dou
setInt(int pIndex, int x) 將引數pIndex位置上設定為給定的int型引數x
setObject(int pIndex, Object o)將引數pIndex位置上設定為給定的Object型引數值
setString(int pIndex, String str) 將引數pIndex位置上設定為給定的String型引數值
ResultSet介面
ResultSet介面類似於一個臨時表,用來暫時存放資料庫查詢操作所獲得的結果集。
ResultSet介面的常用方法如下:
getInt()
getFloat()
getDate()
getBoolean()
getString()
getObject() 以指定型別獲取ResultSet物件的當前行的指定列值。
next() 將指標向下移一行
updateInt() 用int值更新指定列
updateFloat()
updateLong()
updateString()
updateObject()
updateNull()
updateDouble() 用指定型別值更新指定列
1、載入MySQL驅動
如果需要訪問資料庫,首先要載入資料庫驅動,資料庫驅動只需在第一次訪問資料庫時載入一次。然後在每次訪問資料庫時建立一個Connection例項,獲取資料庫連線,這樣就可以執行操作資料庫的SQL語句。最後在完成資料庫操作時,釋放與資料庫的連線。Java載入資料庫驅動的方法是呼叫Class類的靜態方法forName()。語法格式如下:Class.forName(String DriverManager)

    String DBDRIVER = "com.mysql.jdbc.Driver";    
    Class.forName(DBDRIVER);

2、建立連線
載入完資料庫驅動即可建立資料庫的連線,要連線資料庫可以使用DriverManager類的靜態方法getConnection()來實現,並分別將資料庫的URL、資料庫使用者名稱和密碼作為該方法的引數,即可建立到指定資料庫的連線。

    String DBDRIVER = "com.mysql.jdbc.Driver";   
    String DBUSER = "root"; 
    String DBPASS = "mysqladmin";   
    Class.forName(DBDRIVER); 
    Connection conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);

3、資料操作(增、刪、改、查)
在Java程式中,一旦建立類資料庫連線,就可以使用Connection介面的createStatement()方法來獲得Statement物件,也可呼叫prepareStatement()方法獲得PreparedStatement物件,通過executeUpdate()方法來執行SQL語句,就可以向資料庫新增資料了。

package com.photon; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import java.sql.Statement;  
public class MySQLConnectTest {  
    //定義MySQL的資料庫驅動程式  
    public static final String DBDRIVER = "com.mysql.jdbc.Driver";  
    //定義MySQL資料庫的連線地址  
    public static final String DBURL = "jdbc:mysql://localhost:3303/javadata";  
    //MySQL資料庫的連線使用者名稱和連線密碼  
    public static final String DBUSER = "root";  
    public static final String DBPASS = "mysqladmin";   
    public static void main(String[] args) {   
        Connection conn = null;   
        // TODO Auto-generated method stub   
        try{    
            Class.forName("com.mysql.jdbc.Driver");   
        }catch(ClassNotFoundException e){    
            e.printStackTrace();   
        }     
        String sql = "insert into mytab(id, m_name, m_password, age) values(2, '李四', '111111', 20)";   
        try {    
            conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
            System.out.println(conn);    
            Statement stmt = conn.createStatement();   
            stmt.executeUpdate(sql);    
        } catch (SQLException e1) {    
            // TODO Auto-generated catch block    
            e1.printStackTrace();   
        }     
    } 
}

Statement介面的executeUpdate()或executeQuery()方法可以執行SQL語句,executeUpdate()方法用於執行資料的插入、修改或刪除操作,返回影響資料庫記錄的條數。executeQuery()方法用於執行SELECT查詢語句,將返回一個ResultSet型的結果集。通過遍歷查詢結果集的內容,才可獲取SQL語句執行的查詢結果。ResultSet物件具有指向當前資料行的游標。最初,游標被置於第一行之前,可以通過該物件的next()方法將游標移動到下一行;如果ResultSet物件沒有下一行,next()方法返回false,所以可以在while迴圈中使用next()方法迭代結果集。

package com.photon; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
public class MySQLConnectTest {  
    //定義MySQL的資料庫驅動程式  
    public static final String DBDRIVER = "com.mysql.jdbc.Driver";  
    //定義MySQL資料庫的連線地址  
    public static final String DBURL = "jdbc:mysql://localhost:3303/javadata";  
    //MySQL資料庫的連線使用者名稱和連線密碼  
    public static final String DBUSER = "root";  
    public static final String DBPASS = "mysqladmin";  
    public static void main(String[] args) {   
        Connection conn = null;   
        // TODO Auto-generated method stub   
        try{    
            Class.forName("com.mysql.jdbc.Driver");   }
        catch(ClassNotFoundException e){    
            e.printStackTrace();   
        }     
        int id, age;   
        String name, pass;   
        String sql = "select * from mytab";   
        try {    
            conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS); 
            System.out.println("id\t使用者名稱\t密碼\t年齡");    
            Statement stmt = conn.createStatement();    
            ResultSet rs = stmt.executeQuery(sql);    
            while(rs.next()){     
                id = rs.getInt("id");     
                name = rs.getString("m_name");     
                pass = rs.getString("m_password");     
                age = rs.getInt("age");     
                System.out.println(id+"\t"+name+"\t"+pass+"\t"+age);    
            }    
            conn.close();   
        } catch (SQLException e1) {    
            // TODO Auto-generated catch block    
            e1.printStackTrace();   
        }     
    } 
}

修改資料是資料庫操作中必不可少的一部分,使用Statement介面中的executeUpdate()方法可以修改資料庫表中的資料,也可以使用PreparedStatement介面中的executeUpdate()方法對資料庫中的表進行修改操作。 修改資料是根據一定的條件進行修改,這個條件可以是固定的,也可以是一個範圍。下面做一個根據範圍修改的例子,同樣使用executeUpdate()方法,它的返回值是一個int型別的資料,表示受影響的行數,獲得這個值就可以知道這次一共修改了幾條資料。
4、注意
由於在一個程式中經常需要對資料庫進行操作,如果每次操作資料庫都要建立資料庫的連線,這樣不但會出現程式碼重複,而且也極大地影響了程式設計效率,為此可以為資料庫連線單獨建立一個類,在該類中定義一個進行資料庫連線的靜態方法,當需要使用資料庫連線時,可以通過類名呼叫該方法獲得資料庫的連線。

相關推薦

Java通過JDBC操作MySQL資料庫

JDBC相關的操作 0、JDBC常用類和介面介紹 DriverManager類 DriverManager類用來管理資料庫中的所有驅動程式;是JDBC的管理層,作用於使用者和驅動程式之間,跟蹤可用的驅動程式,並在資料庫的驅動程式之間建立連線。此外,D

JAVA通過JDBC操作MySQL資料庫(三):PreparedStatement介面操作資料庫

JAVA通過JDBC操作MySQL資料庫(三):PreparedStatement介面操作資料庫 Statement介面的問題 PreparedStatement介面操作資料庫 Statement介面的問題 在文章JAVA通過JDBC操作

Myeclipse通過JDBC連線MySQL資料庫的詳細步驟

首先要說明的是,使用jdbc連線資料庫並不難,只要你按照接下來的步湊一步一步的做,理清思路,相信你肯定能夠成功。 一、準備工作 下載JDBC驅動。 網上有許多驅動可供下載,但魚龍混雜,可能部分讀者不知

在 PowerDesigner 通過JDBC連線 MySQL 資料庫

注意事項 記得不要漏掉最後的“;”符號。 (1)首先新建一個“PhysicalDataModel”型別的檔案,然後點選“Database”->"Configure  Connections",彈出視窗“Configure Data Connections”, 並選擇"Connection

Java通過JDBC 進行MySQL資料庫操作

一:前言 在測試工作中難免會和資料庫打交道,可能大家對資料庫語句都比較熟,比如常見的增刪改查等,但是當我們在做自動化測試時,比如介面測試,大部分請求引數,可能都是從資料庫中取值,並且介面返回值最後都會記錄在資料庫中,這樣前提就需要和資料庫建立連線,才能進行讀寫

java程式使用JDBC連線mysql資料庫

  在java程式中我們時常會用到資料庫中的資料或操作資料庫中的資料,如果java程式沒有和我們得資料庫連線,就不能實現在java程式中直接操作資料庫。使用jdbc就能將java程式和資料庫連起來,此時我們就能在java程式裡通過java程式碼完成我們要對資料庫的操作。但是使用jdbc怎麼實現連線呢? 具體

Java程式通過JDBC連線遠端資料庫MySQL

程式碼如下: import java.sql.*; public class jdbc { @SuppressWarnings("unused") public static void main

Java 通過JDBC連線Mysql資料庫的方法和例項

  之前有兩篇文章講了安裝mysql(ubuntu和windows)和視覺化工具workbench的使用,這篇文章就講一下java程式是如何連線MySQL資料庫的。  Java是通過JDBC連線Mysql資料庫的。JDBC(Java Data Base Connectivi

Android通過jdbc連線mySQL資料庫時,資料庫拒絕連線

原因: mysql伺服器出於安全考慮,預設只允許本機使用者通過命令列登入。 解決方案: 先通過localhost登入mysql伺服器 將mysql伺服器的mysql資料庫的user表中root使用者的Host欄位改為"%"。 操作如下: window+r 輸

第68課:Spark SQL通過JDBC操作MySQL

內容:     1.SparkSQL操作關係資料庫意義     2.SparkSQL操作關係資料庫 一、通過SparkSQL操作關係資料庫意義     1.SparkSQL可以通過jdbc從傳統關係型資料庫中讀寫資料,讀取資料後直接生成DataFrame,然後在加上藉助

scala(一):通過jdbc連線mysql資料庫

1.主題描述 scala針對MySQL資料庫進行增刪改查的基本操作。 2.程式碼 package SparkSQLproject.Log import java.sql.{Connection, DriverManager} /** * scala通過jdb

JavaEE_ JDBC操作MySQL資料庫 (進階篇)

JDBC連線資料庫    •建立一個以JDBC連線資料庫的程式,包含7個步驟:     1、載入JDBC驅動程式:               在連線資料庫之前,首先要載入想要連線的資料庫的驅動到JVM(Java虛擬機器),     這通過java.lang.Clas

在myeclipse通過jdbc訪問mysql出現拒絕訪問的解決辦法

 前兩天在做爬蟲的時候,改完一陣程式碼之後,再次執行居然提示“ERROR 1044: Access denied for user: '@localhost' to database 'mysql'”這個錯誤,不知道什麼原因,問了其他人他們說也經常遇到,後來我就去網上查了

eclipse新建java工程利用JDBC連線MYSQL資料庫

java利用JDBC連線資料庫首先需要載入與註冊驅動,這裡我用的是Class.forName()方法註冊驅動,還有一種是將驅動程式新增到 PS:在註冊驅動之前需要確保工程裡有相應的驅動,所以現在工程下

Java 資料庫java工程通過JDBC連線到資料庫

(在原博文上有改動) 下面請一字一句地看,一遍就設定成功,比你設定幾十遍失敗,費時會少得多。 首先,在連線資料庫之前必須保證SQL Server 2012是採用SQL Server身份驗證方式而不是windows身份驗證方式。如果在安裝時選用了後者,則重新設定如下:

在jsp使用JDBC連線mysql資料庫出現錯誤

       這個問題又浪費了我一晚上的時間,不過值得了,終於還是讓我連上了mysql資料庫。並通過tomcat伺服器查詢到了資料庫裡的檔案資訊。所以可以往後面繼續前進了,值得了。        

javadao層獲取MySQL資料庫的時間

由於ResultSet包中的getDate()方法預設的是使用java.sql.date,會將資料庫中所有的時間型別轉換成java.sql.date型別(只有日期沒有具體時分秒) 所以使用getTimestamp(),獲取到的當前時間的時間戳(long型別的date),在

通過mysqlclient操作MySQL資料庫

我使用的是 Python3.5,所以選擇 mysqlclient 來操作 MySQL 安裝mysqlclient 要想使 python 可以操作 mysql 就需要 MySQLdb 驅動,它是 python 操作 mysql 必不可少的模組。 使用pi

Eclipse使用JDBC連線MYSQL資料庫

JDBC驅動的下載與匯入 JAVA可以通過MYSQL的JDBC驅動連線資料庫,這裡記錄了Eclipse建立工程連線資料庫的過程。 1.MySQL的JDBC驅動名為Connector/J, 下載zip

純手寫利用poi讀取xls檔案,並通過JDBC存入MySQL資料庫

001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019