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

运行结果

相关推荐
终末圆5 天前
JDBC与MyBatis:数据库访问技术的变迁【后端 15】
前端·数据结构·数据库·后端·算法·mybatis·jdbc
zhyhgx1 个月前
如何在IDEA上使用JDBC编程【保姆级教程】
java·ide·mysql·intellij-idea·jdbc
Onlooker1292 个月前
JDBC介绍及使用
数据库·jdbc
大汉堡~2 个月前
JDBC(Java访问数据库)
java·数据库·jdbc
G皮T3 个月前
【Spring Boot】Java 的数据库连接模板:JDBCTemplate
java·数据库·spring boot·jdbc·jdbctemplate
ItKevin爱java3 个月前
ResultSet的作用和类型
数据库·jdbc
ItKevin爱java3 个月前
JDBC的四个核心步骤
java·jdbc
ItKevin爱java3 个月前
如何加载数据库驱动以及JDBC驱动有哪些类型?
java·jdbc
岁岁岁平安3 个月前
JDBC之API(DriverManager)详解
java·数据库·mysql·jdbc