JAVA 访问MySQL数据库 JDBC-MySQL

xbghc

写在前面

阅读人群:刚学习JAVA的人群
应该具备的背景知识:mysql数据库
当前版本:
- jdk-15.0.2
- jre1.8.0_281


这个教程应该在之后的版本都有效。

目录

[TOC]

知识梳理

JDBC-MySQL介绍

每个编程语言都会提供其访问数据库的接口,java提供JDBC-MySQL驱动来访问MySQL。而这个驱动在一个文件里,需要我们去官网下载。

JDBC-MySQL安装

下载链接

注:如果你电脑上已经有了JDBC-MySQL,可以跳过本节。

进入下载连接

  1. 在"Select Operating System"下面选择Platform Independent(应该是默认选好的)
  2. 随便选哪个文件,点击右边的"Download"
  3. 点击“No thanks, just start my download”
  4. 把压缩文件中名为mysql-connector-java-8.0.25.jar的文件解压(当然你的版本号可能不同)

JDBC-MySQL中的类

  • Connection类:维持与数据库的连接(好比一个游戏客户端,你每次打开都要登录,关了客户端再打开就要重新登陆),这个Connection就是用来保存登录信息的。
  • Statement类:用来执行SQL语句,需要用Connection对象创建
  • ResultSet类:用来接收查询语句的结果

实现

请提前了解try/catch语句的作用

注意,过程中会有很多异常抛出的语句,这些都是必要的。

但还是请专注于核心代码,报错之前你甚至可以直接无视catch语句内的代码和注释,因为那本就是助你查找错误的。

请一步一步跟着做,前一步没调通后面是一定会报错的,而且增加你查找错误的难度。

准备

  1. 如果你使用IDE(如eclipse,IDEA),将mysql-connector-java-8.0.25.jar文件导入到外部库里
  2. 如果你没有使用IDE,将mysql-connector-java-8.0.25.jar文件解压到项目文件夹里(现在的大多数解压文件都支持解压jar文件),保证com文件夹和你编写的java文件在同一个目录

还是建议使用IDEA,会省掉很多事情

初始化

导入类,这里你也可以挨着写要导入的类

import java.sql.*;

这一步你可以理解为加载驱动。

try{
    Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception e){
    // 如果这里的代码执行,说明你的准备工作没做好,这种情况下你后面的代码全会报错
    // 检查前面的准备操作,直到这里不报错再写后面的代码
    System.out.println("加载驱动失败!");
    System.out.println(e);
}

上面代码没有抛出异常的话,证明你的准备工作做得很到位~

建立连接

这里假设你的mysql服务器在本地,端口为3306,要连接的数据库名称为database。

如果不是,将localhost改为服务器的ip地址,3306改为服务器上数据库的端口,database改为数据库名。

Connection con;
String url = "jdbc:mysql://localhost:3306/database";
String username = ""; //这里输入你的数据库用户名
String password = ""; //你的密码

try{
    con = DriverManager.getConnection(url,user,password);
}
catch(Exception e){
    // 这里的代码执行说明连接失败
    // 检查前面的驱动加载是否成功
    // 检查url,username,password是否正确
    System.out.println("连接失败");
    System.out.println(e);
}

创建Statement对象

及其简单的一步

Statement statement = con.creatStatement();

执行查询语句

查询语句用到的是Statement对象的executeQuery()方法,返回一个ResultSet对象

ResultSet rs;
String sql = "";//sql写入要执行的查询语句
rs = statement.executeQuery(sql);

ResultSet对象的使用:

  • rs.next()
    获取下一行数据
    刚获得rs时就得执行一次,才是获得第一行数据,不然啥都得不到。
    如果获取到的行有数据,则返回true,否则,返回false,表示执行rs.next()之前就到了最后一行
  • rs.getString(String column)
    这个方法传入列名,获取当前行的该列名的String类型的值
  • 其他很少用到,可以去官方文档里看
try{
    //假定获取的结果中有一列叫"name"
    rs.next();
    System.out.println(rs.getString("name"));
}
catch(Exception e){
    System.out.println("出错了!");
    System.out.println(e);
}

执行添加、更新、删除语句

修改语句用到的是Statement对象的executeUpdate()方法,返回的是你修改的行数

String sql = "";
int num;
num = statement.executeUpdate(sql);

封装

为了更好的使用,减少代码量,我自己封装了一下(后面没有其他知识了,只有供参考的代码)

import java.sql.*;

public class MySQLtool {
    public static Connection con;
    public static Statement statement;

    static void Init(String url, String username, String password) {
        // 1. 加载驱动
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (Exception e) {
            System.out.println(e);
            return;
        }

        // 2. 连接数据库
        try {
            con = DriverManager.getConnection(url, username, password);
        } catch (Exception e) {
            System.out.println(e);
            return;
        }
    }

    // 查询
    static public ResultSet Query(String sql) {
        try {
            return statement.executeQuery(s);
        } catch (SQLException e) {
            System.out.println(e);
            return null;
        }
    }

    // 修改
    static public int update(String sql) {
        // 执行语句
        try {
            return statement.executeUpdate(sql);
        } catch (SQLException e) {
            System.out.println(e);
            return -1;
        }
    }

这样就可以MySQL.Init()初始化后,直接通过MySQL.Query()MySQL.Update()来执行SQL语句了。

MySQLtool可能涉及到类方法的知识,可以先去看看,反正是学java躲不掉的。

阅读 194
1 声望
0 粉丝
0 条评论
你知道吗?

1 声望
0 粉丝
宣传栏