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

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

  • 提高效率。

相关推荐
岁岁种桃花儿2 小时前
MySQL从入门到精通系列:InnoDB记录存储结构
数据库·mysql
蜜獾云3 小时前
oracle查询所有的表名和注释
oracle
jiunian_cn3 小时前
【Redis】hash数据类型相关指令
数据库·redis·哈希算法
冉冰学姐3 小时前
SSM在线影评网站平台82ap4(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm框架·在线影评平台·影片分类
知识分享小能手5 小时前
SQL Server 2019入门学习教程,从入门到精通,SQL Server 2019数据库的操作(2)
数据库·学习·sqlserver
爬山算法5 小时前
Hibernate(84)如何在DevOps流程中使用Hibernate?
oracle·hibernate·devops
踩坑小念6 小时前
秒杀场景下如何处理redis扣除状态不一致问题
数据库·redis·分布式·缓存·秒杀
萧曵 丶6 小时前
MySQL 语句书写顺序与执行顺序对比速记表
数据库·mysql
Wiktok7 小时前
MySQL的常用数据类型
数据库·mysql
曹牧7 小时前
Oracle 表闪回(Flashback Table)
数据库·oracle