天天看點

JDBC中的接口及代碼封裝

JDBC的接口都在:java.sql包下

java.sql.DriverManager(類)

java.sql.Connection(資料庫連接配接對象)

           connection.close(); :關閉Java如資料庫的連結

                 connection.createStatement();

                 prepareStatement()建立sql預處理對象

                 prepareCall()建立存儲過程處理對象

java.sql.Statement(sql執行對象)

                                           executeUpdate(String) 傳回 int(所影響函數) 執行 insert update delete

                                           executeQuery(String)  ResultSet   執行 select 傳回查詢結果  結果就包裝在 ResultSet(接口内)

                                           批處理多條sql 

                                           addBatch(String) 添加 insert update delete

                                           executeBatch() int[]

java.sql.PreparedStatement(SQL預處理) java.sql.ResultSet(記錄集對象)

java.sql.ResultSetMetaData(查詢出來的表結構)

java.sql.CallableStatement(調用存儲過程)

DataSource  (資料庫源 javax.sql)資料員:javax.sql.DataSource

DriverManager建立了Connection對象  Connection建立了接口 Statement接收Connection來實作sql語句 網頁驗證 ——邏輯運算——準備資料庫申請sql———資料庫
JDBC中的接口及代碼封裝
sql查詢

ResultSet方法中的resultSet.next()方法查詢 

     用while循環 因為while循環比較适合不知道次數的循環

     查詢:舉例他有個類似光标一樣的東西如果有就傳回一個TRUE 沒有就傳回fales

JDBC中的接口及代碼封裝

如過有常用的代碼你可以将它包裝起來 節省工程量

jdbc連結:

public class Test {
    private static Test ourInstance = new Test();
    private DataSource dataSource = null;

    public static Test getInstance() {
        return ourInstance;
    }

    private Test() {
        ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
        try {
            comboPooledDataSource.setDriverClass("com.mysql.cj.jdbc.Driver");
            comboPooledDataSource.setJdbcUrl("");
            comboPooledDataSource.setUser("root");
            comboPooledDataSource.setPassword("");
            comboPooledDataSource.setMaxPoolSize(3);
            comboPooledDataSource.setMinPoolSize(1);
            dataSource = comboPooledDataSource;
            Connection connection = dataSource.getConnection();
            System.out.println("初始化成功");
        } catch (PropertyVetoException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}           

sql預處理

public static ResultSet getResultSet(Connection connection, String sql, Object... objects) throws SQLException {
        PreparedStatement connection1 = connection.prepareStatement(sql);
        for (int i = 0; i < objects.length; i++) {
            connection1.setObject(i + 1, objects[i]);
        }
        ResultSet rs = connection1.executeQuery();
        return rs;
    }

    public static int getUpdate(Connection connection, String sql, Object... objects) throws SQLException {
        PreparedStatement pst = connection.prepareStatement(sql);
        for (int i = 0; i < objects.length; i++) {
            pst.setObject(i + 1, objects[i]);
        }
        int a = pst.executeUpdate();
        return a;
    }
           

sql事務:

public Connection getDataSource() throws SQLException {
        Connection connection = dataSource.getConnection();
        connection.getAutoCommit();
        return connection;
    }

    public Connection getDataSource2() throws SQLException {
        Connection connection = dataSource.getConnection();
        connection.setAutoCommit(false);
        return connection;
    }           

JDBC增删查改訓練

import java.sql.*;
import java.sql.Connection;

public class T1 {
    public static <connection> void main(String[] args) throws Exception {
        Connection connection = DriverManager.getConnection("jdbc:mysql://47.101.201.210/Test?useSSL=FALSE&serverTimezone=UTC",
                "root",
                "Sb1996350.");
        Statement c = connection.createStatement();
        //int a/*列印影響函數*/ = c.executeUpdate/*執行更新語句*/("");//删除  添加 更行  都是屬于更新語句
        //  System.out.println(a);
        Connection connection1 = T2.getInstance().getconnctin();//如果有經常要用的代碼,可以将它封裝起來、用的話直接通過方法調用就行
        Statement statement = connection.createStatement();//這裡将connection對象給 Statement
        //   調用Statement 類中的sql執行代碼
        ResultSet resultSet = statement.executeQuery("select *from student");//jdbc一切以查詢為主如果列起别名查詢的時候就輸别名
       //resultSet 方法中每一個表的資料類型都有兩種得值方式   一種是字元串類型(列的名字) 一種是整數型(第幾行)
        while (resultSet.next()) {
       int sid=resultSet.getInt(1);//表的第一個個字段
            System.out.println(sid);
       String to=resultSet.getString(2);//表的第二個字段
            System.out.println(to);
        }
       connection.close();//用完後及時關閉 良好的代碼書寫習慣
    }
}