目录
实现代码
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();
}