二、JDBC——數據庫鏈接和創建


本章都是使用如下的數據庫

這裏寫圖片描述

二、JDBC的編程步驟(以mysql爲例子)

如下

1、加載數據庫驅動(jar文件):每個服務商提供包

Class.forName("com.mysql.jdbc.Driver");//加載包爲mysql軟件包

其他數據庫軟件加載包如下:

  • Oracle數據庫:oracle.jdbc.driver.OracleDriver
  • SQL Server2008數據庫:com.microsoft.jdbc.sqlserver.SQLServerDriver
  • DB2數據庫:com.ibm.db2.jdbc.Net.DB2Driver

2、獲得數據庫鏈接

形如:

conn= DriverManager.getConnection( "url" , "user" , "password" );
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/cxg2850105498","root","cxg200888");//這裏是mysql數據庫鏈接方式
  • Oracle數據庫:jdbc:oracle:thin:@localhost:1521:orcl(爲數據庫的SID) , sUsr(用戶) , sPwd(密碼)
  • SQL Server2008數據庫:jdbc:sqlserver://localhost:1433;databasename=stu, sa(用戶), sPwd(密碼)
  • DB2數據庫:jdbc:db2://localhost:5000/sample(爲你的數據庫名),sUsr(用戶), sPwd(密碼)

3、創建語句
4、執行查詢
5、遍歷結果集合
6、關閉數據庫

以mysql爲例子:

package com;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mysql.jdbc.Statement;

public class Test {
    public static void main(String []args){
        java.sql.Connection conn=null;

        //1.加載註冊驅動類
        try {
            Class.forName("com.mysql.jdbc.Driver");//加載驅動
        } catch (ClassNotFoundException e) {

            e.printStackTrace();
        }

        //2.創建數據庫鏈接
        try {
            conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/cxg2850105498","root","cxg200888");
        } catch (SQLException e) {
            e.printStackTrace();
        }

        //3.創建語句
        String sql="select id,name,email from c";
        try {
            Statement s=(Statement) conn.createStatement();//Statement 接口需要通過Connection 接口進行實例化操作  

            //4.執行SQL查詢
        ResultSet r=s.executeQuery(sql);

        //5.遍歷結果集
        while(r.next()){
            //r.next()判斷是否還有數據
            //按1、2、3順序取數據庫的值
            int id=r.getInt(1);
            String name=r.getString(2);
            String email=r.getString(3);
            System.out.println(id+"   "+name+"   "+email);
        }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //6.關閉數據庫
        finally{
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

通過SELECT 語句,可以查詢數據中的內容,在mysql 中直接查詢的時候可以發現將返回全部的查詢結果給用戶看,那麼對於程序的操作中也是一樣的,所有的查詢結果要返回到程序處進行輸出查看,那麼程序通過ResultSet 接口保存全部的查詢結果,通過Statement 接口中的executeQuery()方法查詢。

查詢之後的數據需要分別的取出。通過 next ()方法找到返回的每一行數據,每一行中各個列的數據需要通過getXxx()方法取得,例如:

取得整型:getInt()

取得字符串:getString()

取得日期:getDate()

取得小數:getFloat()

三、第一種改進JDBC

1、將驅動和數據庫鏈接封裝在DBUtil中(創建DBUtil.java類)

這裏寫圖片描述

package com;

import java.sql.DriverManager;
import java.sql.SQLException;

import com.mysql.jdbc.Connection;

public class DBUtil {
    //定義成不可修改的
    private static String driver;
    private static String url;
    private static String username;
    private static String password;
    //把值都按要求填入
    static {
        driver="com.mysql.jdbc.Driver";
        url="jdbc:mysql://localhost:3306/cxg2850105498";
        username="root";
        password="cxg200888";
    }
    //打開數據庫
    public static Connection open() {
        try {
            //1、註冊加載驅動
            Class.forName(driver);
            //2、鏈接數據庫
            return (Connection) DriverManager.getConnection(url,username,password);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    //關閉數據庫
    public static void close(Connection conn) {
        if(conn!=null)
        {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

2、將Test.java修改

package com;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;

public class Test {
    public static void main(String []args){
        Connection conn=DBUtil.open();
        //3.創建語句
        String sql="select id,name,email from c";
        //4.執行SQL查詢
        try {

            Statement s=(Statement) conn.createStatement();
        ResultSet r=s.executeQuery(sql);
        //5.遍歷結果集
        while(r.next()){
            //r.next()判斷是否還有數據
            int id=r.getInt(1);
            String name=r.getString(2);
            String email=r.getString(3);
            System.out.println(id+" . "+name+" || "+email);
        }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //6、關閉數據庫
        finally{
            DBUtil.close(conn);
            }

    }
}

四、第二種改進JDBC

這裏寫圖片描述

1、將加載註冊和數據庫鏈接弄到config.properties配置文件裏

不能有任何空格逗號

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/cxg2850105498
username=root
password=cxg200888

2、DBUtil.java

package com;

import java.io.FileNotFoundException;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

import com.mysql.jdbc.Connection;

public class DBUtil {
    //定義成不可修改的
    private static String driver;
    private static String url;
    private static String username;
    private static String password;
    //把值都按要求填入
        static {
        //此對象是用於加載properties文件數據
       ResourceBundle rb=ResourceBundle.getBundle("Config");
        driver=rb.getString("driver");
        url=rb.getString("url");
        username=rb.getString("username");
        password=rb.getString("password");
    }
    //打開數據庫
    public static Connection open() {
        try {
            //註冊加載驅動
            Class.forName(driver);
            //鏈接數據庫
            return (Connection) DriverManager.getConnection(url,username,password);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    //關閉數據庫
    public static void close(Connection conn) {
        if(conn!=null)
        {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章