JDBC*

*JDBC数据库连接步骤

1.将JDBC驱动的jar添加到项目的依赖中。

2.加载JDBC驱动

例如: Class.forName("com.mysql.jdbc.Driver");

3.连接数据库

例如:

Connection con = DriverManager.getConnection(URL,username,password);

4.获取Statement【PreparedStatement】对象,执行SQL语句

例如:

String sql = "SELECT * FROM `stu`";

Statement stm = con.createStatement();

ResultSet rs= stm.executeQuery(sql);

例如:

String sql = "SELECT * FROM `user` WHERE `username` = ? AND `password` = ?";

PreparedStatement pstm = con.prepareStatement(sql);

pstm.setObject(1,username);

pstm.setObject(2,password);

ResultSet rs= pstm.executeQuery();

5.处理结果

例如:List<Student> studentList = new ArrayList<>();

while(rs.next()){

Student student = new Student();

student.setSid(rs.getString("sid"));

student.setSname(rs.getString("sname"));

student.setAge(rs.getInt("age"));

student.setGender(rs.getString("gender"));

studentList.add(student);

}

6.释放资源

注意:SQL对象资源如IO对象资源一样,不会被垃圾回收器回收。

*JDBC-API

  • DriverManger(驱动管理器)的作用有两个:

> 1. 注册驱动:这可以让JDBC知道要使用的是哪个驱动;

> 2. 获取Connection:如果可以获取到Connection,那么说明已经与数据库连接上了。

  • Connection对象表示连接,与数据库的通讯都是通过这个对象展开的.

> 1.负责Java程序与Mysql数据库之间的数据传输(通讯)

-- Statement是用来向数据库发送SQL语句的,这样数据库就会执行发送过来的SQL语句:

>1. int executeUpdate(String sql):执行更新操作(insert、update、delete等);

>2. ResultSet executeQuery(String sql):执行查询操作,数据库在执行查询后会把查询结果,查询结果就是ResultSet;

  • ResultSet对象表示查询结果集,只有在执行查询操作后才会有结果集的产生。

结果集是一个二维的表格,有行有列。操作结果集要学习移动ResultSet内部的"行光标",

以及获取当前行上的每一列上的数据:

>1. boolean next():使"行光标"移动到下一行,并返回移动后的行是否存在;

>2. XXX getXXX(int col):获取当前行指定列上的值,参数就是列数,列数从1开始,而不是0。

-PreparedStatement的使用

>1. 使用Connection的prepareStatement(String sql):即创建它时就让它与一条SQL模板绑定;

>2. 调用PreparedStatement的setXXX()系列方法为问号设置值

>3. 调用executeUpdate()或executeQuery()方法,但要注意,调用没有参数的方法;

优点:

  • 防止SQL攻击;

  • 提高代码的可读性,以可维护性;

  • 提高效率。

相关推荐
做梦敲代码34 分钟前
达梦数据库-读写分离集群部署
数据库·达梦数据库
dingdingfish1 小时前
JSON 系列之1:将 JSON 数据存储在 Oracle 数据库中
oracle·json·database
小蜗牛慢慢爬行1 小时前
如何在 Spring Boot 微服务中设置和管理多个数据库
java·数据库·spring boot·后端·微服务·架构·hibernate
hanbarger1 小时前
nosql,Redis,minio,elasticsearch
数据库·redis·nosql
微服务 spring cloud2 小时前
配置PostgreSQL用于集成测试的步骤
数据库·postgresql·集成测试
先睡2 小时前
MySQL的架构设计和设计模式
数据库·mysql·设计模式
弗罗里达老大爷2 小时前
Redis
数据库·redis·缓存
仰望大佬0072 小时前
Avalonia实例实战五:Carousel自动轮播图
数据库·microsoft·c#
学不透java不改名2 小时前
sqlalchemy连接dm8 get_columns BIGINT VARCHAR字段不显示
数据库