JDBC操作流程

搭桥——造车——发车——销毁

//1.注册驱动;有多种方法
//方法1;会注册两次驱动。因为静态代码块会注册一次,使用这个类第一次就会加载静态代码块
//DriverManager.registerDriver(new Driver());
//方法2;原理加载一次这个类从而加载一次静态代码块
Class.forName("xxxxx");

//2.获取连接
//方式1
Connection connection=DriverManger.getConnection("jdbc:数据库厂商://IP地址:port/数据库名?user=xxx&password=xxx")
//方式2
//Connection connection=DriverManger.getConnection("jdbc:数据库厂商://IP地址:port/数据库名","xxx","xxx")
//方式3
//Connection connection=DriverManger.getConnection("jdbc:数据库厂商://IP地址:port/数据库名",properties)
//方式4:用于批量操作
//Connection connection=DriverManger.getConnection("jdbc:数据库厂商://IP地址:port/数据库名?rewriteBathchedStatements=true","xxx","xxx")

//需要事务时写
//connection.setAutoCommit(false);
 
//3.创建statement
//方式1;适应于静态代码块
//Statement statement=connection.createStatement();
//方式2; 通用;常用方式
PreparedStatement statement=connection.preparedStatement(sql);
//方式3; 用于主键回显
//PreparedStatement statement=connection.preparedStatement(sql,Statement.RETURN_GENTATED_KEYS);

//4.填写占位符;如果创建statement时用的是方式1则跳过
方式1;常用情形
statement.setObject(xxx);//xxx表示占位符从左到右的第几个,从1开始数
//方式2 ;用于批量操作情形
//statement.setObject(xxx);
//... ...
//statement.addBatch();
//statement.setObject(xxx);
//... ...
//statement.addBatch();


try {
//5.发送sql获取结果

//5.1 发送sql
//方式1;用于创建statement时用的是方式1时且sql语句为非查询操作
//int i = statement.executeUpdata(sql);//返回修改行数

//方式2;用于创建statement时用的是方式1时且sql语句为查询操作
//ResultSet resultSet= statement.executeQuery(sql);//返回结果集

//方式3;用于创建statement时用的非方式1时且sql语句为非查询操作
//int i = statement.executeUpdata();//返回修改行数

//方式4;用于创建statement时用的非方式1时且sql语句为查询操作
ResultSet resultSet= statement.executeQuery();//返回结果集

//方式5;用于执行批量操作情形
//statement.executeBatch();

//5.2获取结果并解析;查询操作返回结果集情形

//若结果只有一条
//if(resultSet.next()) {
//}

//若结果可能有多条,只有几列
while(resultSet.next()) {
   //获取列值信息
   //方式1
   //get类型(int 列的下角标(从1开始));
   //方式2
   get类型(String 列名或列别名);

}

//若结果可能有多条,且列有多个操作繁琐情形
//获取列信息
//ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
//获取列的数量
//int columnCount = resultSetMetaData.getColumnCount();
//while(resultSet.next()) {
//   for(int i = 0;i<columnCount;i++) {
       //获取列信息
       //获取列名
       //String columnName = resultSetMetaData.getColumnLabel(i);
       // 获取列值  
       //get类型(String 列名或列别名);
//    }
//}

//用于插入后获取主键情形
//if(i>0){
//用于插入后获得主键值
//    ResultSet generateKeys = statement.getGenerateKeys(); 
//    resultSet.next();
//    int id = resultSet.getInt(1);
//}

//提交;开启事务写
//connection.commit();

} catch(Exception e) {

//回滚;开启事务写
//connection.rollback();
throw e;

}
finally {
//6.关闭资源,用了就要关原则
resultSet.close();
statement.close();
connection.close();
}














“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值