實現代碼:
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();
}