目录
二.JDBC(Java Database Connectinity)(重要)
👌 棒棒有言:生活不可能一帆风顺,总会有波折,总会有险阻。生活是个爱开玩笑的孩子,也许今天给你所有,明天又会让你一无所有,无需烦恼,该来的总会来,再黑的夜晚也会有黎明到来的那一刻。不管生活有多么曲折,只要拥有幸福的态度就能挺过漫漫长夜,就能迎来美好的明天。
👌 本章简介:JDBC(Java Data Base Connectivity,java数据库连接),是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。
简单地说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。
👍 重要:请给个关注哦!
(1)使用DOS命令窗口,输入“mysql -hlocalhost -u数据库用户名 -p数据库密码”命令连接数据
库,编写SQL语句(SQL语句以分号;或者\g结尾),回车运行,查看操作结果(受影响行数或结
果集)
(2)使用MySQL数据库自带的命令窗口,输入数据库密码连接数据库,编写SQL语句(SQL语句
以分号;或者\g结尾),回车运行,查看操作结果(受影响行数或结果集)
(3)使用数据库连接软件(SQLyog)连接数据库,通过图形化界面或者在查询编辑器中编写
SQL语句,运行SQL语句查看操作结果(受影响行数或结果集)
在实际开发中,当用户的数据发生变化时,不会也不可能通过客户端连接数据库去操作SQL语句,
因为在实际开发中,数据的操作量很大,如果使用客户端操作数据库,无法保证SQL语句的正确性
和执行效率。
(1)JDBC(Java DataBase Connectivity)Java连接数据库的规范(标准),可以使用Java语
言连接数据库,从而对数据进行增删改查(CURD)操作。
Java中定义了访问数据库的接口,可以为多种关系型数据库提供统一的访问方式。由数据库厂商提
供驱动实现类(Driver数据库驱动)。
mysql-connector-java-5.1.x 适用于5.x版本
mysql-connector-java-8.1.x 适用于8.x版本
http://本文链接:https://blog.csdn.net/keyboard_/article/details/114337739
JDBC是由多个接口和类进行功能实现的。
类型 | 权限定名 | 功能 |
---|---|---|
class | java.sql.DriverManager | 管理多个数据库驱动类,提供了获取数据库连接的方法 |
interface | java.sql.Connection | 代表一个数据库连接(当connection不为null时,表示已连接数据库) |
interface | java.sql.Statement | 发送SQL语句到数据库工具 |
interface | java.sql.PreparedStatement | 发送SQL语句到数据库工具 |
interface | java.sql.ResultSet | 保存SQL查询语句的结果数据(结果集) |
class | java.sql.SQLException | 处理数据库应用程序时所发生的异常 |
(1)在项目下创建lib文件夹,用于存放jar文件。
(2)将mysql驱动mysql-connector-java-5.1.x复制到项目的lib文件夹中。
(3)将选中lib文件中的jar文件配置到项目中。
创建数据库jdbcdatabase,专门用来存储学习jdbc要用的表
- CREATE TABLE IF NOT EXISTS `student`(
- `tid` INT(10) AUTO_INCREMENT COMMENT '学号',
- `name` VARCHAR(20) NOT NULL COMMENT '姓名',
- `age` INT(2) NOT NULL COMMENT '年龄',
- `gender` VARCHAR(5) NOT NULL COMMENT '性别',
- `phone` VARCHAR(11) UNIQUE NOT NULL COMMENT '手机号码',
- `identitycard` VARCHAR(18) UNIQUE NOT NULL COMMENT '身份证号码',
- `address` VARCHAR(20) NOT NULL COMMENT '住址',
- PRIMARY KEY (`tid`)
- );
- INSERT INTO `student`(`tid`,`name`,`age`,`gender`,`phone`,`identitycard`,`address`) VALUES (1001,'张三',20,'男','13112345678','340825200212241936','安徽合肥蜀山区');
-
- INSERT INTO `student`(`tid`,`name`,`age`,`gender`,`phone`,`identitycard`,`address`) VALUES (1002,'李红',18,'女','13111223344','340825200408151936','安徽合肥庐阳区');
使用Class.forName("包含完整路径的驱动类");//手动加载字节码文件到JVM中。
// 1、注册驱动
Class.forName("com.mysql.jdbc.Driver");
通过DriverManager.getConnection(url,user,password)获取数据库连接对象
url:mysql数据库的路径
user:mysql数据库用户名
password:mysql数据库密码
// 2 、获取数据库连接对象
String url = "jdbc:mysql://127.0.0.1:3306/jdbcdatabase";
String user = "root";
String password = "123456";
Connection connection = DriverManager.getConnection(url, user, password);
通过Connection对象获取Statement对象,用于发送SQL语句,实现对数据库进行访问。
//3、获取发送SQL语句的对象
Statement statement = connection.createStatement();
- // 4、编写SQL语句,SQL语句最好是先在SQLyog里面写一遍并运行一下,保证SQL语句没有语法错误,这里sid是自增长,所以不需要写
- String sql = "INSERT INTO `student`(`name`,`age`,`gender`,`phone`,`identitycard`,`address`)
- VALUES ('王五',21,'男','13825869876','340825200109151928','安徽合肥包河区');";
// 5、执行SQL语句
//DML语句:对于插入数据、修改数据、删除数据操作,都调用executeUpdate()方法,返回受影响的行数(int类型)
//DQL语句:对于查询数据,调用executeQuery()方法,返回一个结果集(ResultSet类型)
int result = statement.executeUpdate(sql);
处理第5步返回的数据。对返回的受影响行数结果进行逻辑判断
- // 6、处理结果,如果返回的受影响行数不为0,说明数据插入成功
- if (result != 0) {
- System.out.println("数据插入成功");
- } else {
- System.out.println("数据插入失败");
- }
释放(关闭)所使用到的所有资源对象,遵循”先开的后关,后开的先关“原则。
- // 7、释放资源,遵循“先开后关,后开先关”的原则
- if (connection != null) {
- try {
- connection.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
-
- if (statement != null) {
- try {
- statement.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
-
- //查询操作中多一个关闭resultSet
- if(resultSet!=null){
- try {
- resultSet.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }