JAVA实现数据库JDBC

本文详细讲解了JDBC的各个组件,包括DriverManager用于驱动注册,Connection管理事务与SQL执行,PreparedStatement防范SQL注入,以及数据库连接池的原理与使用。同时介绍了Druid数据库连接池的配置与实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、数据库JDBC

1.1 DriverManger

从驱动包中注册驱动

Class.forname(“com.jdbc.mysql.DriverManger”);

如果是本机的3306版本,则可以将url设置为

String url = "jdbc:mysql:///db1?useSSL=false";

1.2 Connection

Connection有两种功能:

  1. 获取SQL对象
  2. 管理事务:在JAVA里,可以用try catch 异常处理机制来管理异常
    在这里插入图片描述

1.3 Statement

执行SQL语句
DML、DDL:

int execute Update(sql) # 返回DML语句影响的行数,DDL成功可能返回
String sql1="update set ... ";
int count = statement.executeUpdate(sql1); //DML,受影响的行数
if(count>0){
	# success
}else{
	# fail
}

String sql2 = "create database db2"; //DDL, count=1
String sql2 = "drop database db2"; //DDL,count=0,所以DDL查询可能为0

1.4 ResultSet

resultset statement.executeQuery(sql);  #执行DQL语句,
result中包含游标,会先判断当前行是否有效

boolean next(); #往下走判断是否有效
int getxxx(参数); # 获取数据 
String getString(参数); # 参数可以是int:列的编号,从1开始,String 列的名称

while(rs.next()){
		rs.getxxx(参数);
	}

定义一个pojo包查询实体

public class Accout {
	    private int id;
	    private  String name;
	    private double math;
	    # 自动生成set、get方法、toString alt+insert
List<Accout> list = new ArrayList<>(); # 生成对象放到list集合中,对集合遍历就能取出所有对象

while(re.next()){
    Accout accout = new Accout();
    int id = re.getInt("id");
    String name = re.getString("name");
    Double math = re.getDouble("math");

    accout.setId(id);
    accout.setName(name);
    accout.setMath(math);

    list.add(accout);
}

1.5 PreparedStatement

继承statement,用于预防SQL注入的问题,以防止服务器被攻击

  1. 预编译SQL,性能更好
  2. 将敏感字符进行转义

开启预编译:useServerPrepStmts=true
如果sql模板一样,只需要进行一次检查,就可以多次快速执行

int id = 3 ;
String name = "masan";

String sql = "select * from stu2 where id  = ? and name = ?"; # 占位符
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
pstmt.setString(2, name);
ResultSet re = pstmt.executeQuery();

if(re.next()){
    System.out.println("success~");
}else {
    System.out.println("fail~");
}

二、数据库连接池

  • 数据库连接池是个容器,负责分配、管理
  • connection 资源复用,提高响应速度
  • 避免连接遗漏,强制connection归还

标准接口:DataSource
Druid(德鲁伊)由阿里开发,功能优秀

// 1.jar导入导入文件夹
// 2.properties导入文件夹
// 3.加载配置文件相当于yaml包
Properties properties = new Properties();
properties.load(new FileInputStream("jdbc-module-demo/src/druid.properties"));
// 4.连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
// 5.获取数据库连接
Connection connection = dataSource.getConnection();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值