IDEA使用JDBC导入配置jar包连接MySQL数据库

 更新时间:2022年12月03日 14:57:45   作者:敲代码の流川枫  
这篇文章介绍了IDEA使用JDBC安装配置jar包连接MySQL数据库的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

jdbc编程简介

JDBC,Java Database Connectivity ,java数据库连接.是一种执行SQL语句的API,是java中数据库连接规范,这个API由java.sql.*,javax.sql.*包中的一些类和接口组成,它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问

1.导入jar包

jar包下载地址:

https://mvnrepository.com/

1.输入地址->输入mysql搜素

2.点击第一个后选择版本

3.选择版本和本机mysql大版本相同的 jar包

4.点击下载jar包

5.创建lib包,导入jar包,直接cv

6.右击lib->点击Add as Library

此时就解析出了jar包中的内容,我们就可以进行对数据库据的编程了

2.建立数据库连接

和数据库建立连接时,需要用到数据库,首先创建一个数据库和一张表然后进行数据库连接

mysql> desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

jdbc编程时用到的资源,必须要导入jar包才能用

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.*;

2.1创建数据源描述数据库服务器在哪

使用 DataSource 描述 MySQL 服务器的位置.

DataSource dataSource = new MysqlDataSource();       
    ((MysqlDataSource)dataSource).setUrl
    ("jdbc:mysql://127.0.0.1:3306/java_2?characterEncoding=utf8&useSSL=false");
    ((MysqlDataSource)dataSource).setUser("root");                            
    ((MysqlDataSource)dataSource).setPassword("123456");

url是唯一地址定位符,就是网址

127.0.0.1:数据库服务器所在的IP地址,这是个特殊的IP,表示主机自己,环回网址,相当于this. 只要数据库服务器和jdbc程序在一台电脑上都可以使用这个IP :3306是端口号,安装时默认的,使用IP确定了主机,网络数据报给那个程序是通过端口号来识别出数据库服务器的 java_2数据库名 characterEncoding=utf8字符编码方式 useSSL=false关闭加密功能

2.2实现一个mysql客户端通过网络和服务器进行通信

Connection connection = dataSource.getConnection();

要注意使用Java.sql的Connection

3.使用代码操作数据库

控制客户端给数据库发送请求,执行操作

3.1增删改操作

增删改和查询稍有不同~

增加操作

构造 SQL 语句. JDBC 操作数据库, 本质仍然是通过 SQL 来描述数据库操作

String sql = "insert into student values(001,'张三')";
PreparedStatement statement = connection.prepareStatement(sql);
int ret = statement.executeUpdate();
statement.close();
connection.close();

String sql 描述的是sql是什么样的

还需要一个特殊的类:

执行是靠PreparedStatement,它会对sql进行一些预处理,解析之类的,之前通过cmd输入的语句是发送给服务器端让服务器进行解析

当前数据是写死的,我们更希望是动态的

我们通过控制台输入一些信息,来操作数据库

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入学号");
        int id = scanner.nextInt();
        System.out.println("请输入姓名");
        String name = scanner.next();
        String sql = "insert into student values(" + id + ",'" + name+ "')";
        PreparedStatement statement = connection.prepareStatement(sql);
        int ret = statement.executeUpdate();

但是这种操作还存在一个问题

这样的代码可读性很低,另一方面,这个代码还容易引起SQL注入攻击

如果输入这样的代码就会在插入的同时引起很多其他的问题

因此我们提出更靠谱的方案:通过占位符替换的方法输入操作信息

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入学号");
        int id = scanner.nextInt();
        System.out.println("请输入姓名");
        String name = scanner.next();
        String sql = "insert into student values(?,?)";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,id);
        statement.setString(2,name);
        int ret = statement.executeUpdate();

注意:这里的占位符下标是从1开始的!!

执行增加,删除,更新三个操作用executeUpdate执行,代码和增加的代码是相同的

执行查询操作使用executeQuery

更新操作

也是通过占位符来操作

Scanner scanner = new Scanner(System.in);
        System.out.println("请输入学号");
        int id = scanner.nextInt();
        System.out.println("请输入修改的姓名");
        String name = scanner.next();
        String sql = "update student set name = ? where id = ? ";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setString(1,name);
        statement.setInt(2,id);
        int ret = statement.executeUpdate();
statement.close();
connection.close();

数据库中的结果:

mysql> select*from student;
+------+------+
| id   | name |
+------+------+
|    1 | 张三 |
|    2 | 李四 |
|    3 | 王五 |
|    5 | 赵六 |
+------+------+
4 rows in set (0.00 sec)
更新后:
mysql> select*from student;
+------+--------+
| id   | name   |
+------+--------+
|    1 | 张三   |
|    2 | 李四   |
|    3 | wangqi |
|    5 | 赵六   |
+------+--------+
4 rows in set (0.00 sec)

删除操作

Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要删除的学号");
        int id = scanner.nextInt();
 
        String sql = "delete from student where id = ? ";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,id);
        int ret = statement.executeUpdate();
statement.close();
        connection.close();

结果:

mysql>  select*from student;
+------+------+
| id   | name |
+------+------+
|    1 | 张三 |
|    2 | 李四 |
|    5 | 赵六 |
+------+------+
3 rows in set (0.00 sec)

三个操作的代码是相同的

执行时给服务器发送网络请求

int ret = statement.executeUpdate();

ret返回的是一个整数,表示执行的结果影响到了多少行

3.2查询操作

查询操作用到的是

ResultSet ret = statement.executeQuery();

与上面三个操作不同的是:

executeUpdate 只能返回一个 int.

executeQuery 返回的是一个 ResultSet 对象. 可以把这个对象视为是一个 "临时表"

增删改返回的是影响的行数,只返回一个整数

查询的结果集合是一张表,因此比其它几个操作多一个遍历,遍历后才能看到结果

String sql = "select*from student";
        PreparedStatement statement = connection.prepareStatement(sql);
        ResultSet ret = statement.executeQuery();
        //遍历临时表, 拿到里面的数据.
        //    resultSet 简单的当成一个类似于 "迭代器" 
        //    next 如果没有到达末尾, 就是返回 true, 要继续循环.
        //    next 如果到达末尾, 就返回 false, 结束循环.
        while(ret.next()) {
            int id = ret.getInt("id");
            String name = ret.getString("name");
            System.out.println("id: "+id+" name: "+name);
        }
        ret.close();
        statement.close();
        connection.close();

获取哪一列,就用getXXX方法 ,XXX为列的类型

结果:

4.断开连接释放资源

java有GC即垃圾回收机制,会自动处理申请的内存,但是像这种连接的资源还需要我们手动释放

资源的释放顺序是和创建顺序相反的

释放的顺序:先用到的资源后释放

ret.close();
statement.close();
connection.close();

到此这篇关于IDEA使用JDBC导入配置jar包连接MySQL数据库的文章就介绍到这了,更多相关JDBC连接MySQL数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java中的异步加载new Thread()方式

    java中的异步加载new Thread()方式

    这篇文章主要介绍了java中的异步加载new Thread()方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Java GUI编程之贪吃蛇游戏简单实现方法【附demo源码下载】

    Java GUI编程之贪吃蛇游戏简单实现方法【附demo源码下载】

    这篇文章主要介绍了Java GUI编程之贪吃蛇游戏简单实现方法,详细分析了贪吃蛇游戏的具体实现步骤与相关注意事项,并附带demo源码供读者下载参考,需要的朋友可以参考下
    2017-09-09
  • java设计模式之简单工厂模式

    java设计模式之简单工厂模式

    这篇文章主要为大家详细介绍了java设计模式之简单工厂模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 简单了解java局部变量与成员变量的区别

    简单了解java局部变量与成员变量的区别

    这篇文章主要介绍了简单了解java局部变量与成员变量的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • IDEA的spring项目使用@Qualifier飘红问题及解决

    IDEA的spring项目使用@Qualifier飘红问题及解决

    这篇文章主要介绍了IDEA的spring项目使用@Qualifier飘红问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Java Optional用法面试题精讲

    Java Optional用法面试题精讲

    这篇文章主要为大家介绍了Java Optional用法面试题精讲,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Java多线程之ReentrantReadWriteLock源码解析

    Java多线程之ReentrantReadWriteLock源码解析

    这篇文章主要介绍了Java多线程之ReentrantReadWriteLock源码解析,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • 图解分析Javaweb进程与线程

    图解分析Javaweb进程与线程

    这篇文章主要介绍了Javaweb进程与线程的知识,本篇文章通过简要的案例,讲解了它的基础原理与使用,以下就是详细内容,需要的朋友可以参考下
    2022-03-03
  • 深入理解什么是Mybatis懒加载(延迟加载)

    深入理解什么是Mybatis懒加载(延迟加载)

    这篇文章主要介绍了深入理解什么是Mybatis懒加载(延迟加载),mybatis的懒加载,也称为延迟加载,是指在进行关联查询的时候,按照设置延迟规则推迟对关联对象的select查询,延迟加载可以有效的减少数据库压力,需要的朋友可以参考下
    2023-10-10
  • Java8的Lambda和排序

    Java8的Lambda和排序

    这篇文章主要介绍了Java8的Lambda和排序,对数组和集合进行排序是Java 8 lambda令人惊奇的一个应用,我们可以实现一个Comparators来实现各种排序,下面文章将有案例详细说明,想要了解得小伙伴可以参考一下
    2021-11-11

最新评论