JDBC API详解一

DriverManager

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

1,注册驱动

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

查看Driver类源码

java 复制代码
	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: 列名

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

案例

案例代码

Account实体类

java 复制代码
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+
'}';
}
}

代码主类

java 复制代码
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();
}
}

运行结果

相关推荐
乘风御浪云帆之上1 天前
数据库操作【JDBC & HIbernate & Mybatis】
数据库·mybatis·jdbc·hibernate
core5124 天前
flink SQL实现mysql source sink
mysql·flink·jdbc·source·cdc·sink·mysql-cdc
爱吃蜂蜜的熊16 天前
JDBC详解
jdbc
最笨的羊羊1 个月前
Debezium日常分享系列之:Debezium3版本Debezium connector for JDBC
jdbc·debezium日常分享系列·debezium·connector·debezium3版本
Java白菜治2 个月前
SpringBoot基础系列学习(五):JdbcTemplate 访问数据库
数据库·spring boot·jdbc·jdbctemplate
Bro_cat2 个月前
JDBC: Java数据库连接的桥梁
java·数据库·mysql·jdbc
是萝卜干呀2 个月前
Eclipse 软件:配置 JDBC、连接 MySQL 数据库、导入 jar 包
java·数据库·mysql·eclipse·jdbc
带刺的坐椅2 个月前
SqlUtils 使用
java·sql·jdbc·solon
带刺的坐椅3 个月前
Solon 3.0 新特性:SqlUtils
java·jdbc·solon
golitter.3 个月前
JDBC介绍
java·数据库·mysql·mybatis·jdbc