当前位置: 首页 > news >正文

JDBC API详解一

DriverManager

驱动管理类,作用:1,注册驱动;2,获取数据库连接

1,注册驱动

Class.forName("com.mysql.cj.jdbc.Driver");

查看Driver类源码

	static{try{DriverManager.registerDriver(newDriver());}catch(SQLExceptionvar1){thrownewRuntimeException("Can'tregisterdriver!");}}

提示:mysql5之后的驱动包,可以省略注册驱动步骤; 自动加载jar包中

2,获取数据库连接

Connection conn=DriverManager.getConnection(url,username,password);

URL连接时,如果不设置SSL会报warnings,可以显示设置SSL=false;

Connection

1,  获取执行SQL的对象

普通执行SQL对象

Statement createStatement()

预编译SQL的执行SQL对象:防止SQL注入

PreparedStatement prepareStatement(sql)

执行存储过程的对象--不常用

CallableStatement prepareCall(sql)

2, 管理事务

MySQL管理事务

  • 开启事务: BEGIN;/ START TRANSACTION;
  • 提交事务:COMMIT;
  • 回滚事务:ROLLBACK;
  • MySQL默认自动提交事务

JDBC管理事务:Connection接口中定义了3个方法

  • 开启事务: setAutoCommit(boolean autoCommit); true为自动提交;false为手动提交,即开启
  • 提交事务:commit()
  • 回滚事务: rollback();

Statement

执行SQL,分为executeUpdate()和executeQuery()方法

executeUpdate(sql) 

用于DDL和DML:如INSERT/UPDATE/DELETE,CREATE/DROP/TRUNCATE ,执行后返回int,表示受影响的行,执行DDL返回0

 executeQuery(sql) 

执行DQL语句(select),返回值:ResultSet结果集对象;

ResultSet

获取查询结果集

1,boolean next(): 

作用:a,将光标移动到下一行;b,判断当前行是否有效;

返回值:true 有效,当前行有数据; false:无效,当前行没数据

2, 获取数据getXxx();

xxx表数据类型getInt(参数),getString(参数)

参数: int:列编号,从1开始;

 String: 列名 

	while(rs.next()){System.out.println(rs.getInt("id")+""+rs.getString("name")+""+rs.getFloat("age"));}

案例 

 案例代码

Account实体类

packagecom.content.pojo;publicclassAccount{
privateintid;
privateStringname;
privatedoublemoney;publicAccount(){
}publicAccount(intid,Stringname,doublemoney){
this.id=id;
this.name=name;
this.money=money;
}publicintgetId(){
returnid;
}publicvoidsetId(intid){
this.id=id;
}publicStringgetName(){
returnname;
}publicvoidsetName(Stringname){
this.name=name;
}publicdoublegetMoney(){
returnmoney;
}publicvoidsetMoney(doublemoney){
this.money=money;
}
@Override
publicStringtoString(){
return"Account{"+
"id="+id+
",name='"+name+'\''+
",money="+money+
'}';
}
}

代码主类 

packagecom.content.jdbc;importcom.content.pojo.Account;
importjava.util.ArrayList;
importjava.util.List;
importjava.sql.*;
publicclassJDBCDemo1_ResultSet{
//1,定义实体类Account
//2,查询数据,封装到Account对象中
//3,将Account对象存入ArrayList集合中
publicstaticvoidmain(String[]args)throwsSQLException{
//1.注册驱动
//Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取连接
Stringurl="jdbc:mysql://x.x.x.x:xxxx/test01?useSSL=false&serverTimezone=UTC";
Stringusername="test01_rw";
Stringpassword="1234545";Connectionconn=DriverManager.getConnection(url,username,password);//3.定义sql
StringsqlQuery="selectid,name,moneyfromaccount";
//4.获取执行sql的对象
Statementstmt=conn.createStatement();
//5.执行sql
ResultSetrs=stmt.executeQuery(sqlQuery);
List<Account>list=newArrayList<>();
//6.处理结果
while(rs.next()){
Accountaccount=newAccount();
//获取数据
intid=rs.getInt("id");
Stringname=rs.getString("name");
Doublemoney=rs.getDouble("money");//封装数据
account.setId(id);
account.setName(name);
account.setMoney(money);
list.add(account);
}
System.out.println(list);
//7.释放资源
rs.close();
stmt.close();
conn.close();
}
}

 运行结果

http://www.lryc.cn/news/436611.html

相关文章:

  • 工厂安灯系统在设备管理中的重要性
  • 【LabVIEW学习篇 - 23】:简单状态机
  • 【CSS】 Grid布局:现代网页设计的基石
  • jQuery UI API 文档
  • 盘点2024年大家都在用的录屏工具
  • 【大数据】探索怎么从一段话中解析关键信息(寄件人相关信息)
  • 初学者指南:MyBatis 入门教程
  • reader-lm:小模型 html转markdown
  • 进击J6:ResNeXt-50实战
  • 新代机床采集数据
  • 景联文科技:专业数据标注公司,推动AI技术革新
  • k8s以及prometheus
  • android 权限说明
  • <winsock>重叠IO模型
  • Android Tools | 如何使用Draw.io助力Android开发:从UI设计到流程优化
  • Java 每日一刊(第5期):变量守护者
  • 【C++二分查找】2517. 礼盒的最大甜蜜度
  • 【详解】数据库E-R图——医院计算机管理系统
  • 分类预测|基于改进的灰狼IGWO优化支持向量机SVM的数据分类预测matlab程序 改进策略:Cat混沌与高斯变异
  • 圆锥曲线练习
  • STM32时钟树
  • NX—UI界面生成的文件在VS上的设置
  • Wine容器内程序执行sh脚本问题研究
  • 《深度学习》OpenCV轮廓检测 模版匹配 解析及实现
  • Java XML
  • 好用的视频压缩工具有哪些?这4款千万不要错过
  • 【Python爬虫系列】_016.关于登录和验证码
  • 基于opencv实现双目立体匹配点云距离
  • RabbitMQ高级篇,进阶内容
  • STM32重定义printf,实现串口打印