带你学习Java的JDBC连接操作MySql数据库

举报
zekelove 发表于 2021/10/10 16:41:19 2021/10/10
【摘要】 带你学习Java的JDBC连接操作MySql数据库,主要学习使用JDBC提供的接口Connection,PreparedStatement,ResultSet等连接并操作数据库。

通过学习了Java的基础语法知识后,又学习了面向对象编程的思想,包括类,函数,方法,继承,多态,内部类,函数式编程,枚举,包装类等内容,学习的内容还是相对比较多的,要想全部都掌握了还需花时间再去巩固学习。要想把这些知识运用到项目中,还要学习常用的设计模式,学习连接操作数据库相关知识。本篇文章我们主要来学习一下使用JDBC连接MySql数据库,并对数据进行增删改查的操作,这些都是项目中必不可少的应用。

JDBC是什么

JDBC全称Java Database Connectivity,译为Java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

JDBC驱动程序是直接连接到数据库的Java驱动程序。

JDBC驱动程序

各个数据库厂商根据JDBC的规范制作的 JDBC 实现类的类库,有四种类型:

1.JDBC-ODBC桥。
2.部分本地API部分Java的驱动程序。
3.JDBC网络纯Java驱动程序。
4.本地协议的纯 Java 驱动程序。

JDBC接口

1.面向数据库的API:Java Driver API,供开发商开发数据库驱动程序用。

2.面向应用的API:Java API,抽象接口,供应用程序开发人员使用(连接数据库,执行SQL语句,获得结果集)。

JDBC应用

第一步:下载MySql驱动包

Java 连接 MySQL 需要驱动包,最新版下载地址为:https://downloads.mysql.com/archives/c-j/,选择对应版本和系统进行下载,解压后得到 jar 库文件,然后在对应的项目中导入该库文件。

第二步:导入驱动包

在项目目录中创建一个文件夹 lib,将解压的 jar 库文件放入此文件夹中,在 xxx.jar 库文件右键“构建路径”-“添加至构建路径”,就可以将jar包添加到当前项目引用的库里面。

第三步:加载驱动

// 注册 JDBC 驱动
Class.forName("com.mysql.jdbc.Driver");

第四步:连接数据库

DB_URL:连接数据库的路径(jdbc:mysql://localhost:3306/test),注意:不同的数据库连接是不一样

USER:数据库用户名(root)

PASSWORD:数据库密码(123456)

Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);

第五步:执行SQL语句

在连接建立后,需要对数据库进行访问,执行 sql 语句,主要有三种方式:

- 使用 Statement 执行sql语句,用于执行不带参数的简单SQL语句。

- 使用 PreparedStatement 执行sql语句,用于执行预编译的sql声明。

- 使用 CallableStatement 执行sql语句,用于执行数据库中存储过程的调用。

为了防范 SQL 注入攻击,我们主要使用 PreparedStatement 执行带参数的SQL语句。

String sql = "select * from user";
PreparedStatement ps = conn.prepareStatement(sql);

第六步:获取数据

ResultSet:对于给定声明取得结果,该对象以逻辑表格的形式封装了执行数据库操作的结果集,通过 PreparedStatement 的 excuteQuery() 方法创建该对象。

ResultSet 对象维护了一个指向当前数据行的游标,初始的时候游标在第一行之前,可以通过 ResultSet 对象的 next() 方法移动到下一行。

// 获取数据集
ResultSet rs = ps.executeQuery(); // 执行查询语句
// 执行插入,更新,删除语句
// String delSql = "delete from user where id = 3";
// int result = ps.executeUpdate(delSql );  
while(rs.next()){
    Integer id = rs.getInt(1);
    String name = rs.getString(2);
    Integer age = rs.getInt(4);
    System.out.println("id="+ id + ",name=" + name + ",age=" + age);
}

第七步:关闭连接

Connection,PreparedStatement,ResultSet 都需要关闭,后开启的要先关闭。

注:关闭之前要检查对象是否为 null

// 完成后关闭对象,也可以写在 finally 里面
rs.close();
ps.close();
conn.close();

运行结果

文章内容如果写的存在问题欢迎留言指出,让我们共同交流,共同探讨,共同进步~~~

文章如果对你有帮助,动动你的小手点个赞,鼓励一下,给我前行的动力。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。