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攻击;

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

  • 提高效率。

相关推荐
LSL666_16 分钟前
MybatisPlus条件构造器(上)
java·数据库·mysql·mybatisplus
U-52184F6930 分钟前
深入理解“隐式共享”与“写时复制”:从性能魔法到内存深坑
java·数据库·算法
程序猿ZhangSir1 小时前
详解了解 Redis IO多路复用底层原理,Select,poll,epoll三者的区别?
数据库·redis·缓存
U-52184F691 小时前
深度解析:从 Qt 的 Q_D 宏说起,C++ 工业级 SDK 是如何保证 ABI 稳定性的
数据库·c++·qt
Gauss松鼠会1 小时前
【GaussDB】LLVM技术在GaussDB等数据库中的应用
大数据·数据库·架构·数据库开发·gaussdb·llvm
IMPYLH1 小时前
Linux 的 dir 命令
linux·运维·服务器·数据库
wfsm1 小时前
mysql事务
数据库·mysql
SadSunset2 小时前
第一章:Redis 入门介绍
数据库·redis·缓存
weixin_464307632 小时前
QT智能指针
java·数据库·qt
王仲肖2 小时前
PostgreSQL VACUUM 与 AUTOVACUUM 深度解析
数据库·postgresql