java-資料庫操作(JDBC)

前言:JDBC用到的API和常用方法

  • DriverMannager類

    載入驅動並創建與資料庫的連接,通常使用Class類的靜態方法forName()來實現載入驅動,使用getConnection(String url,String user,String pwd)方法實現連接,返回如下Connection對象

  • Connection介面

    使用createStatement()返回一個用於向資料庫發送語句的Statement對象,prepareStatement(String sql)返回一個用於向資料庫發送參數化的SQL語句的PreparedStatement對象

  • Statement介面

    用於執行靜態SQL語句,並返回一個結果對象

    boolean execute(String sql)//用於執行各種SQL語句,返回布爾值,true代表有查詢結果,可用getResultSet()獲得查詢結果
    int executeUpdate(String sql)//用於執行insert、update、delete語句,返回資料庫中受影響的記錄條數
    ResultSet executeQuery(String sql)//執行select語句,返回ResultSet對象
    

  • PreparedStatement介面

    是Statement的子介面,擴展了帶有參數SQL語句的執行操作,使用佔位符"?"代替參數,使用setXXX()方法賦值

    int executeUpdate()//執行SQL語句,限制語句為無返回內容的sql或DML語句
    ResultSet executeQuery()//執行SQL查詢 返回ResultSet對象
    void setInt(int index,int x)//將指定的對應表頭的參數設置為x
    void setFloat(int index,float x)
    void setString(int index,String x)
    void setDate(int index, Date x)//注意:Date類型必須為java.sql.Date,非java.util.Date
    

  • ResultSet介面

    用於保存查詢後的結果集,封裝在一個邏輯表格中,介面內部有指向表格數據行的游標(指針),調用next()方法作為循環條件迭代結果集

    String getString(int columnindex)//根據索引獲取指定欄位的String的值
    String getString(String columnname)//根據欄位名稱獲取指定欄位的String的值
    int getInt(int columnindex)//根據索引獲取指定欄位的int的值
    int getInt(String columnname)//根據欄位名稱獲取指定欄位的int的值
    Date getDate(int columnindex)//根據索引獲取欄位的Date值
    Date getDate(String columnname)//根據欄位名稱獲取欄位的Date值
    boolean next()//游標下移一行
    boolean absolute(int row)//游標移動到指定行
    

步驟概述:


1.載入資料庫驅動

​ 資料庫驅動zip包下載://dev.mysql.com/downloads/connector/j/

選擇Platform Independent,完成後在項目結構中導入文件夾里的Jar包


載入驅動
Class.forName("com.mysql.jdbc.Driver");//Mysql驅動
//IDEA親測提示上面語句已經棄用,可改為com.mysql.cj.jdbc.Driver""
Class.forName("oracle.jdbc.driver.OracleDriver");//Oracle驅動

2.通過DriverManager獲取資料庫連接

​ Connect conn=DriverManager.getConnection(String url,String user,String pwd);

​ url格式:jdbc:mysql://localhost:3306/database-name


3.通過Connection對象獲取Statement對象

​ Statement stmt=conn.creatStatement();或stmt=conn.prepareStatement(String sql);


4.使用Statement執行SQL語句

​ ResultSet rs=stmt.executeQuery(sql);


5.操作得到的結果集

​ rs.getXXX();

6.關閉連接,釋放資源

​ 在try...catch..後的finally{}中統一關閉資源

實例

public class sql {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            //1.載入資料庫驅動
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://114.xx.xxx.62:3306/company";
            String user = "root";
            String pwd = "xxxxxx";
            //2.通過DriverManager獲取資料庫連接
            conn = DriverManager.getConnection(url, user, pwd);
            //3.通過Connection獲取statement對象
            stmt = conn.createStatement();
            //4.執行SQL語句
            rs = stmt.executeQuery("select * from demo1");
            //5.操作結果集
            while (rs.next()) {
                    String name = rs.getString("企業名稱");
                    String lat = rs.getString("經緯度");
                    String flag1 = rs.getString("flag1");
                    System.out.println(name+"   |   "+lat+"    |    "+flag1);
                }
            } 

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }finally {
            //6.關閉連接,釋放資源
        	if(rs!=null){rs.close();}
        	if(stmt!=null){stmt.close();}
        	if(conn!=null){conn.close();}
            }
        }
    }
}

​

​ 運行結果