JDBC

實現代碼:

Connection connection = null;
PreparedStatement preparedStatement = null;
try {
    Class.forName(driver);
    connection = DriverManager.getConnection(url, username, password);
    preparedStatement = connection.prepareStatement(sql);
    preparedStatement.setString(1,"");
    ResultSet resultSet =preparedStatement.executeQuery();
    while (resultSet.next()){ }
}catch (ClassNotFoundException e){

} catch (SQLException e){
    
}

參數:

driver_Hive = "jdbc:hive2://10.16.2.62:10000/default";
url_Hive_Spark = "jdbc:hive2://10.16.2.61:10016/default";

driver_MPP = "com.gbase.jdbc.Driver";
url_MPP = "jdbc:gbase://10.16.1.193:5258/bigtabletest";

driver_Oracle = "oracle.jdbc.driver.OracleDriver";
url_Oracle = "jdbc:oracle:thin:@10.16.3.16:1521:orcl";

driver_Mysql = "com.mysql.jdbc.Driver";
url_Mysql = "jdbc:mysql://localhost:3306/samp_db";

PreparedStatement批量處理

Connection con = null;
PreparedStatement pstm = null;
try {
    // 1. 建立與數據庫的連接
    con = JDBCUtil.getConnection();
    // 2. 執行sql語句
    // 1).先創建PreparedStatement語句(發送slq請求):
    pstm = con.prepareStatement("insert into student values(?,?,?,?)");
    //1,首先把Auto commit設置爲false,不讓它自動提交
    con.setAutoCommit(false);
    // 2) 設置sql語句1
    pstm.setInt(1, 33);
    pstm.setString(2,"wangqin");
    pstm.setString(3, "c++");
    pstm.setDouble(4, 78.5);
    // 3) 將一組參數添加到此 PreparedStatement 對象的批處理命令中。
    pstm.addBatch();
    // 2) 設置sql語句2
    pstm.setInt(1, 34);
    pstm.setString(2,"wuytun");
    pstm.setString(3, "c");
    pstm.setDouble(4, 77);
    // 3) 將一組參數添加到此 PreparedStatement 對象的批處理命令中。
    pstm.addBatch();
    // 4) 將一批參數提交給數據庫來執行
    //如果全部命令執行成功,則返回更新計數組成的數組。
    pstm.executeBatch();
    System.out.println("插入成功!");
    // 若成功執行完所有的插入操作,則正常結束
    con.commit();//2,進行手動提交(commit)
    System.out.println("提交成功!");
    //3,提交完成後回覆現場將Auto commit,還原爲true
    con.setAutoCommit(true);
} catch (SQLException e) {
    try {
        // 若出現異常,對數據庫中所有已完成的操作全部撤銷,則回滾到事務開始狀態
        if(!con.isClosed()){
            con.rollback();//4,當異常發生執行catch中SQLException時,記得要rollback(回滾);
            System.out.println("插入失敗,回滾!");
            con.setAutoCommit(true);
        }
    } catch (SQLException e1) {
        e1.printStackTrace();
    }
}


prepareStatement與Statement

PrepareStatement接口是Statement接口的子接口,他繼承了Statement接口的所有功能。

 PreparedStatement 實例包含已編譯的 SQL 語句,所以其執行速度要快於 Statement 對象。

常用方法

1、boolean execute()

該語句可以是任何種類的 SQL 語句。

2、ResultSet executeQuery()

執行 SQL 查詢,並返回該查詢生成的 ResultSet 對象。

3、int executeUpdate()

語句必須是一個 SQL 數據操作語言(DML)語句,比如 INSERT、UPDATE 或 DELETE 語句;或者是無返回內容的 SQL 語句,比如 DDL 語句。

1、prepareStatement

int sid=1001;
prepareStatement ps=conn.prepareStatement("select * from Cust where ID=?");
ps.setInt(1, sid);
rs = ps.executeQuery();

2、Statement

int sid=1001;
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from Cust where ID="+sid);

ResultSet

int columns = resultSet.getMetaData().getColumnCount();

// 顯示列,表格的表頭
for (int i = 1; i <= columns; i++) {
    System.out.print(m.getColumnName(i) + "\t\t");
}

// 顯示錶格內容
while (res.next()) {
    for (int i = 1; i <= columns; i++) {
        System.out.print(res.getString(i) + "\t\t");
    }
    System.out.println();
}

 

發佈了49 篇原創文章 · 獲贊 7 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章