数据库连接有哪些方式?数据库Statement和PreparedStatement有什么区别?

本文探讨了数据库连接的两种方式——通过DriverManager和DataSource,分析了它们在连接复用和资源管理上的差异。同时,详细比较了Statement与PreparedStatement的区别,指出PreparedStatement的预编译特性带来的性能优势以及适用场景。

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

两道面试题

1. 数据库连接有哪些方式?分别有什么区别

数据库连接Connection
Connection接口实现类由数据库提供,获取Connection对象通常有两种方式


1.一种是通过DriverManager(驱动管理类)的静态方法获取

// 加载JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 创建数据库连接
Connection connection = DriverManager.getConnection(url);

2.一种是通过DataSource(数据源)对象获取。

DataSource ds = new MysqlDataSource();
((MysqlDataSource) ds).setUrl("jdbc:mysql://localhost:3306/test");
((MysqlDataSource) ds).setUser("root");
((MysqlDataSource) ds).setPassword("root");
Connection connection = ds.getConnection();

☆以上两种方式的区别是

DriverManager类来获取的Connection连接,是无法重复利用的,每次使用完以后释放资源时,通过connection.close()都是关闭物理连接
DataSource提供连接池的支持。连接池在初始化时创建一定数量的数据库连接,这些连接时可以重复利用的,每次使用完数据库连接,释放资源时使用connectio.close()都是将Connection连接对象回收。

2.数据库Statement和PreparedStatement有什么区别?

Statement对象主要是将SQL语句发送到数据库中。JDBC API 主要提供了三种Statement对象

一、Statement

  1. 用于执行简单的不带SQL的语句

二、PrepareStatement

  1. 用于执行或者不带参数的SQL语句
  2. SQL语句会预编译在数据库系统
  3. 执行速度快于Statement

三、CallableStatement

  1. 用于执行数据库存储过程的调用

			Statement statement = null;
			statement = connection.createStatement();
//            //执行sql
//            String sql = "select * from student";
//            resultSet = statement.executeQuery(sql);
			PreparedStatement ps = null;
String sql = "insert into student(sn,name,qq_mail,classes_id) values (?,?,?,?)";
            ps = connection.prepareStatement(sql);
            ps.setInt(1,6);
            ps.setString(2,"钱九");
            ps.setString(3,"qianjiu@qq.com");
            ps.setInt(4,1);

主要掌握两种执行SQL的方法:
executeQuery() 方法执行后返回单个结果集的,通常用于select语句
executeUpdate()方法返回值是一个整数,指示受影响的行数,通常用于update、insert、delete
语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值