JDBC---学习Jdbc如何操作连接数据库
程序员文章站
2024-01-26 15:25:34
...
什么是jdbc?
Java Database Connectivity
,Java数据库连接 ,简称JDBC
- 是Java和数据库之间的一个桥梁,是一个规范而不是一个实现,能够执行SQL语句。它由一组用Java语言编写的类和接口组成。各种不同类型的数据库都有相应的实现,本文中的代码都是针对MySQL数据库实现的。
- Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如`查询和更新数据库中数据的方法
什么是数据库驱动?
数据库提供商对JDBC接口的实现类,如mysql,oracle,sqlserver
//接口interface
public interface JdbcApi{
public void update();
}
//接口不能直接创建对象
JdbcApi api = new JdbcApi();
api.update();
//Mysql厂商
public class MysqlJdbc implements JdbcApi{
public void update(){
//用Mysql写的代码
}
}
MysqlJdbc api = new MysqlJdbc();
api.update();
//Oracle 厂商
public class OracleJdbc implements JdbcApi{
public void update(){
//用OracleJdbc写的代码
}
}
OracleJdbc api = new OracleJdbc();
api.update();
Jdbc操作数据库原理图
-
Jdbc如何操作Mysql?
- 1 加载数据库驱动
- 2 创建并获取数据库链接
- 3 创建jdbc statement对象
- 4 设置sql语句
- 5 设置sql语句中的参数(使用preparedStatement)
- 6 通过statement执行sql并获取结果
- 7 对sql执行结果进行解析处理
- 8 释放资源(resultSet、preparedstatement、connection)
Jdbc连接池原理图
- (1)频繁创建连接,销毁连接造成极大资源开销
- (2)连接池,即一个集合,可以管理连接对象
- (3)有什么特点?
- 1 可以初始化指定数量的连接
- 2 可以指定集合的最大元素个数
- 3 可以申请连接池的连接
- 4 不用的连接可以放回连接池
Jdbc代码分析总结
- (1)jdbc 做一个根据名称查询用户的操作
搜索
- (2)初始化数据库
CREATE DATABASE mybatis01;
USE mybatis01;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` INT(11) PRIMARY KEY AUTO_INCREMENT,
`username` VARCHAR(32) ,
`birthday` DATE,
`sex` CHAR(1) ,
`address` VARCHAR(256)
)
INSERT INTO `user` VALUES ('1', '王五', '2014-07-10', '2', NULL);
INSERT INTO `user` VALUES ('10', '张三', '2014-08-11', '1', '北京市');
INSERT INTO `user` VALUES ('16', '张小明', '2015-07-10', '1', '河南郑州');
INSERT INTO `user` VALUES ('22', '陈小明', '2016-07-10', '2', '重庆');
INSERT INTO `user` VALUES ('24', '张三丰', '2019-07-10', '1', '天津');
INSERT INTO `user` VALUES ('25', '陈小明', '2019-07-10', '1', '杭州');
INSERT INTO `user` VALUES ('26', '王五', '2018-07-10', NULL, NULL);
INSERT INTO `user` VALUES ('27', '李四', '2017-07-10', '2', '天津');
INSERT INTO `user` VALUES ('28', '赵六', '2016-07-10', '1', '上海');
INSERT INTO `user` VALUES ('29', '张朋', '2018-07-10', '1', '云南');
INSERT INTO `user` VALUES ('30', '李威', '2015-07-10', '2', '*');
INSERT INTO `user` VALUES ('31', '张明', '2016-07-10', '1', '*');
INSERT INTO `user` VALUES ('32', '陈明', '2013-07-10', '2', '武汉');
- (3)配置mysql驱动依赖
- 创建maven工程,再创建web01模块
- 配置依赖
pom.xml
<properties>
<mysql.version>5.1.32</mysql.version>
</properties>
<!-- MySql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
- (4)分析jdbc编写操作数据库代码的可改进地方
- 1 频繁创建、释放数据库连接 ,性能开销大没有自带连接池
- 2 Sql语句写在java代码中 ,硬编码
- 3 sql语句的where条件与占位符赋值没有写判断逻辑
- 4 数据库记录需封装成pojo对象User类
import org.junit.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class TestJdbc {
@Test
public void test01() throws Exception {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
// 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 通过驱动管理类获取数据库链接
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis01?characterEncoding=utf-8", "root", "123456");
// 定义SQL语句 ?表示占位符
String SQL = "select * from user where username = ?";
// 获取预处理statement
preparedStatement = connection.prepareStatement(SQL);
// 设置参数,第一个参数为SQL语句中参数的序号(从1开始),第二个参数为设置的参数值
preparedStatement.setString(1, "王五");
// 向数据库发出SQL执行查询,查询出结果集
resultSet = preparedStatement.executeQuery();
// 遍历查询结果集
while (resultSet.next()) {
System.out.println(resultSet.getString("id") + " " + resultSet.getString("username"));
}
// 释放资源
resultSet.close();
preparedStatement.close();
connection.close();
}
关于JDBC的学习今天就这么多,欢迎评论区讨论哦。
上一篇: Filter 过滤器的介绍及使用
推荐阅读
-
JDBC---学习Jdbc如何操作连接数据库
-
Java使用JDBC连接SQLite数据库进行各种数据操作的详细过程
-
mongodb数据库入门学习笔记之下载、安装、启动、连接操作解析
-
C#学习--Oracle数据库基本操作(连接、增、删、改、查)封装
-
Java基于jdbc连接mysql数据库操作示例
-
Java基于jdbc连接mysql数据库操作示例
-
Java基于JDBC连接数据库及显示数据操作示例
-
C#学习--Oracle数据库基本操作(连接、增、删、改、查)封装
-
Heidisql如何连接sql server数据库并做增删改操作?
-
【⭐】Java—Spring-—数据库操作—使用内置连接池,报读取不到驱动错误。Could not load JDBC driver class。