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

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

  • 提高效率。

相关推荐
qq_413847409 小时前
HTML怎么限制输入字符数_HTML input maxlength属性用法【详解】
jvm·数据库·python
liuyouzhang11 小时前
将基于Archery的web数据库审计查询平台封装为jdbc接口的可行性研究(基于AI)
前端·数据库
Meepo_haha14 小时前
配置 Redis
数据库·redis·缓存
u01091476017 小时前
CSS组件库如何快速扩展_通过Sass @extend继承基础布局
jvm·数据库·python
baidu_3409988217 小时前
Golang怎么用go-noescape优化性能_Golang如何使用编译器指令控制逃逸分析行为【进阶】
jvm·数据库·python
m0_6784854517 小时前
如何利用虚拟 DOM 实现无痕刷新?基于 VNode 对比的状态保持技巧
jvm·数据库·python
qq_3422958217 小时前
CSS如何实现透明背景效果_通过RGBA色彩模式控制透明度
jvm·数据库·python
panzer_maus17 小时前
MySQL 索引介绍与索引优化的简单介绍
数据库·mysql
Greyson117 小时前
CSS如何处理超长文本换行问题_结合word-wrap属性
jvm·数据库·python
captain37617 小时前
事务___
java·数据库·mysql