Java基础之JDBC

目录

实现代码

参数

PreparedStatement批量处理

prepareStatement与Statement


实现代码

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();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值