1. 程式人生 > >Java操作數據庫實現"增刪改查"

Java操作數據庫實現"增刪改查"

mysq 新的 rom 可用 erp catch next() value eight

本文主要講解JDBC操作數據庫 主要實現對MySql數據庫的"增刪改查"

綜合概述:

JDBC的常用類和接口

一 DriverManager類

DriverManage類用來管理數據庫中的所有驅動程序,是JDBC的管理層,作用於用戶和驅動程序之間,跟蹤可用的驅動程序,並在數據庫的驅動之間建立連接,DriverManager類中的方法都是靜態方法,下列是DriverManager的常用方法:

getConnection(String URL,String user,String PassWord) 指定3個參數,分別是連接地址,用戶名 和密碼 類連接數據庫
setLoginTimeout()                                     獲取驅動程序視圖登陸到某一數據庫可以等待的最長時間,以秒為單位,
Println(String message)                               將一條信息打印到當前JDBC日誌流中

二 Connection 接口

COnnection 接口代表與特定的數據庫的連接,要對數據庫中的數據進行操作,首先要獲取數據庫連接,Connection實就像在應用程序與數據庫之間開通了一條通道.可以通過DriverManager類的getConnection()方法獲取Connection的實例.Connection接口的常用方法如下:

createStatement()  創建Statement對象

PrepareStatement()  創建預處理對象PrepareStatement

isReadOnly()        查看當前Connection對象的讀取模式是否是只讀形式

SetReadOnly()       設置當前Connection對象的讀寫模式,默認是非只讀模式

close()            立即釋放此Connection對象的數據庫和JDBC資源,而不是自動釋放

三 Statement 接口

Statement接口用於創建向數據庫中傳遞SQL語句的對象, 常用方法如下:

execute(String sql)      執行靜態的SELECT語句 可能返回多個數據集
executeQuery(String sql) 執行給定的Sql語句  返回單個ResultSet對象
clearBatch()             清空此Statement對象的當前SQL命令列表
executeUpdate()          執行指定的SQL語句 該語句可以為INSERT  UPDATE DELETE語句
close()                  釋放Statement實例占用的數據庫和JDBC資源

四 PreparedStatement 接口

PreparedStatement接口繼承Statement,用於執行動態的SQL語句 ,通過PreparedStatement實例執行的SQL語句,將被編譯並保存到PreparedStatement實例中,從而可以重復的執行該SQL語句 . preparedStatement接口的常用方法:

execute( )        在此PreparedStatement對象執行SQL語句,該語句可以是任何類型的SQL語句
executeQuery( )   在此preparedStatement對象中執行Sql查詢語句,返回為查詢數據集的對象
executeUpdate()   在此preparedStatement對象執行Sql語句,該SQL語句必須是一個INSERT UPDATE DELETE語句,或者是沒有返回值得DLL語句
setbyte(int Pindex byte by) 將參數Pindex位置上設置為給定的byte參數by
setString(int Pindex String str)將參數Pindex位置上設置為給定的String參數值str
setDouble(int pindex Double dou)將參數Pindex位置上設置為給定的Double參數值dou
setInt(int Pindex int i) 將參數Pindex位置上設置為給定的int參數值i
setObject(int PIndex Ocject obj)將參數Pindex位置上設置為給定的Object參數值Obj

五 ResultSet 接口

ResultSet接口類似於一個臨時的數據表,用來暫時存放數據庫查詢操作獲取到的數據集 它的常用方法如下:

getint()  以int形式獲取當前行指定的列
getFloat()  以Float形式獲取當前行指定的列
getDate()   以Date形式獲取當前行指定的列
getBoolean() 以Boolean形式獲取當前行指定的列
getString()   以String形式獲取當前行指定的列
getObject()   以Object形式獲取當前行指定的列
next( )         將指針向下移一行
updateInt()   用int值更新指定列
updateFloat()用float值更新指定列
updateLong()  用指定的long值更新指定的列
updateString()用指定的"String"值更新指定列
updateObejct() 用object值更新指定的列
updatenull()  將指定的列值修改為null
updateDate()  用指定的Date值更新指定的列
updateDouble() 用指定的DOuble值更新指定的列

通過JDBC操作數據庫

如果需要訪問數據庫,就必須加載數據庫驅動,這個驅動只是在程序第一次運行的時候加載一次,下面將我們的連接Mysql數據庫的連接器下載:鏈接:http://pan.baidu.com/s/1dE42McT 密碼:emqo

1):新建一個項目,創建lib文件夾技術分享

2)把剛才下載的驅動放到這個文件裏

3)點項目右鍵選擇Build Path 點Configure Build Path

技術分享

選擇Libraries 然後Add JARs 把lib文件下的驅動放進去.

下面就可以編寫代碼了;

首先創建一個DBHerpel類:代碼如下:

package com.gr.DBHerpel;

import java.sql.*; //導包

/** 
 * ClassName: DBHerpel
 * @Description: TODO 數據庫輔助類
 * @author 情緒i
 */
public class DBHerpel {

    private static Connection Conn; // 數據庫連接對象

    // 數據庫連接地址
    private static String URL = "jdbc:mysql://localhost:3306/myschool?characterEncoding=utf8&useSSL=true";

    // 數據庫的用戶名
    private static String UserName = "root";
    // 數據庫的密碼
    private static String Password = "1234";

    /**
     * * @Description: TODO 獲取訪問數據庫的Connection對象
     * @param @return
     * @return Connection 連接數據的對象
     * @author 情緒i
     */
    public static Connection getConnection() {

        try {

            Class.forName("com.mysql.jdbc.Driver"); // 加載驅動

            System.out.println("加載驅動成功!!!");
        } catch (ClassNotFoundException e) {
            // TODO: handle exception
            e.printStackTrace();
        }

        try {

            //通過DriverManager類的getConenction方法指定三個參數,連接數據庫
            Conn = DriverManager.getConnection(URL, UserName, Password);
            System.out.println("連接數據庫成功!!!");

            //返回連接對象
            return Conn;

        } catch (SQLException e) {
            // TODO: handle exception
            e.printStackTrace();
            return null;
        }
    }

}

這裏連接的是我MySchool的數據庫 數據庫的表結構如下:

技術分享

數據表裏有user pwd 兩個字段;下面通過一個案例實現查詢:

"查"

代碼如下:

package com.gr.visitServer;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import com.gr.DBHerpel.DBHerpel;

public class VisitMySql {

    // 連接對象
    private Connection conn;
    // 傳遞sql語句
    private Statement stt;
    // 結果集
    private ResultSet set;

    // 查詢
    public void Select() {
        try {
            // 獲取連接
            conn = DBHerpel.getConnection();
            if (conn == null)
                return;
            // 定義sql語句
            String Sql = "select * from login";
            // 執行sql語句
            stt = conn.createStatement();
            // 返回結果集
            set = stt.executeQuery(Sql);
            // 獲取數據
            while (set.next()) {

                System.out.println("用戶名:" + set.getString(1) + "\t密碼:"
                        + set.getString(2));

            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {

            // 釋放資源
            try {
                set.close();
                conn.close();
            } catch (Exception e2) {
                // TODO: handle exception
            }

        }
    }

}

然後新建一個包Test編寫Test類代碼如下:

package com.gr.Test;

import com.gr.visitServer.VisitMySql;

public class Test {
    public static void main(String[] args){
        
        //實例化對象
        VisitMySql vs = new VisitMySql();
       //調用查詢方法
        vs.Select();
       
        
        
        
    }

}

上面的代碼是查詢數據庫Login表裏的用戶的賬號和密碼,用Connection接口的createStatement()方法獲得Statement對象傳遞Sql語句,用它的ExecuteQuery()方法獲取單個ResultSet對象.

下面向數據庫添加數據:

"增"

在VisitMySql類中添加Add方法:代碼如下:

// 使用Statement接口的executeUpdate()方法向數據庫添加數據
    public void Add(){
        
        try {
            //獲取連接
            conn = DBHerpel.getConnection();
            if(conn==null)
            return;
            //獲取用戶輸入的賬號和密碼
            Scanner input = new Scanner(System.in);
            System.out.print("請輸入用戶名:");
            int user = input.nextInt();
            System.out.print("請輸入密碼:");
            String pwd = input.next();
            //定義sql語句
            String sql = "insert into login values("+user+" , ‘"+pwd+"‘);";
            //獲取Statement對象
            stt = conn.createStatement();
            //執行sql語句
            stt.executeUpdate(sql);
            
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            //釋放資源
            try {
                
                conn.close();
                
            } catch (Exception e2) {}
            
        }
        
        
    }

同樣也是獲取Connection接口的createStatement()方法獲取Statement的對象,用Statement對象的executeUpdate()方法來執行INSERT語句,最後在Test類調用Add()方法

下面使用PreparedStatement接口中的executeUpdate()方法來執行INSERT語句,

// 使用PreparedStatement接口的executeUpdate()方法向數據庫添加一條數據
    public void Add2() {

        try {
            // 獲取連接
            conn = DBHerpel.getConnection();
            if (conn == null)
                return;

            // 獲取用戶輸入
            System.out.print("請輸入用戶名:");
            Scanner input = new Scanner(System.in);
            int user = input.nextInt();
            System.out.print("請輸入密碼:");
            String pwd = input.next();

            // 定義sql語句
            String AddSQL = "INSERT INTO login VALUES (?,?);";

            // 創建一個Statement對象
            PreparedStatement ps = conn.prepareStatement(AddSQL);
            
            //向sql語句的第一個問號添加數據
            ps.setInt(1, user);
            //向sql語句的第二個問號添加數據
            ps.setString(2,pwd);
            // 執行sql語句
            ps.executeUpdate();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                conn.close();

            } catch (Exception e2) {
                // TODO: handle exception
            }

        }
    }

最後在Test類測試Add2()方法,,這裏Sql語句中用兩個問號代表要添加的用戶名和密碼,根據上面PreparedStatement接口的常用方法,setint() setString() 方法來指定添加的數據.

"刪"

刪除數據也是很常用的技術,同樣可以使用Statement接口中的executeUpdate()方法來實現 代碼如下:

//使用Statement接口的executeUpdate()方法實現從數據庫刪除數據
    public void Delete(){
        try {
            
            //獲取連接
            conn = DBHerpel.getConnection();
            if(conn==null)
            return;
            
            //提示用戶輸入要刪除的用戶
            System.out.print("請輸入刪除的用戶:");
            Scanner input = new Scanner(System.in);
            int user = input.nextInt();
            
            //定義sql語句
            String deleteSql = "DELETE FROM login WHERE user="+user+";";
            //獲取Statement對象
            stt = conn.createStatement();
            //執行sql語句
            stt.executeUpdate(deleteSql);
            
            
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            //釋放資源
            try {
                conn.close();
                
            } catch (Exception e2) {}
            
        }
    }
    

"改"

對數據的修改也是日常代碼中常見的技術. 可以使用Statement接口中executeUpdate()方法來實現,也可以用PreparedStatement接口的executeUpdate()方法來實現 具體代碼如下:

//使用PreparedStatement接口中的executeUpdate()方法實現修改數據
    public void Update(){
        
        try {
            //獲取連接
            conn = DBHerpel.getConnection();
            if(conn==null)
                return;
            
            //用戶輸入要修改的賬戶
            System.out.print("請輸入用戶名:");
            Scanner input = new Scanner(System.in);
            int user = input.nextInt();
       //提示用戶輸入新的密碼 System.out.print(
"請輸入新的密碼:"); String NewPwd = input.next(); //定義Sql語句 String UpdateSql = "UPDATE login SET pwd = ‘"+NewPwd+"‘ WHERE user = "+user+";"; //創建Statement對象 PreparedStatement ps = conn.prepareStatement(UpdateSql); //執行sql語句 ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); }finally{ //釋放資源 try { conn.close(); } catch (Exception e2) {} } }

以上是對Mysql數據庫的"增刪改查"功能的具體實現,

Java操作數據庫實現"增刪改查"