jdbc连接mysql(基础)

首先需要到mysql官网下载jdbc连接mysql的jar包。

链接:https://downloads.mysql.com/archives/c-j/

选择 platform independent。有.tar.gz和.zip,可以根据自己的需要选择下载 !

或者用mysql install 来安装,我这里已经提前安装过了!

1.点击add。

2.选择mysql connectors connector/j ,对应的就是java的jar包!

 由于我已经安装过了,所以是灰色的,后面可以根据提示进行安装,完成之后,我们用java连接的mysql的jar包就已经安装好了!

接下来打开我们的idea,我的例子是idea的,eclipse也是同理,基本都是差不多的!

我新建了一个myqltest项目来配置所需要的环境并用来测试!

 点击文件,选择项目结构,点击模块,选择依赖,点击左上角的+号,选择jar或目录,这个目录就需要添加我们下载的jar目录,如果是在官网下载的需要解压那个压缩文件,找到其中的jar文件!

 我的jar是在mysql install 安装的,所以我找到它的位置,并选择jar文件即可!

最后再打上勾勾,应用即可!

 点开外部库,看到出去java17之外我们下载的jar就配置好了!(我的jdk是17的,你们的可能会不一样,但是影响不大)。

 然后我们一次创建java包,java文件,开始测试连接自己的mysql数据库!

package cn.edu.cqie;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * @author 李思琪
 */
public class MsqlTest {
    public static void main(String[] args) {
        //127.0.0.1和localhost是等效的,都是连接本地mysql
        //String url = "jdbc:mysql://127.0.0.1:3306/mydatabase?";//指定连接数据库mydatabase
        //不指定数据库直接连接,后面需要调用use语句或create语句创建数据后use数据库
        String url = "jdbc:mysql://localhost:3306/?";
        //设置自己的用户名和密码
        String username = "root";
        String password = "qq2865642661";
        try {
            // 1.加载驱动
            // mysql8.0以上
            Class.forName("com.mysql.cj.jdbc.Driver");
            // mysql8.0以下
            //Class.forName("com.mysql.jdbc.Driver");
            // 2.开始连接
            Connection connection = DriverManager.getConnection(url, username, password);
            // 3.创建执行sql语句对象
            Statement statement = connection.createStatement();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

 写入以上代码,这样基本框架就好了,接下来就是操作数据库了。

其中有关jdbc的url相关可以查看(感谢):https://blog.csdn.net/zl13101758272/article/details/115641544

我们需要打开一个数据库可视化工具来验证我们的代码是否执行成功,我这里用的是sqlyog,其它的同理,可以看到,我这里并没有提前创建数据库,我们将通过jdbc来实现它!

接下来我们将创建一个数据库company,一个表employees,

写入一些数据并读取出来打印到控制台。

这是建表建库的sql语句:

DROP DATABASE IF EXISTS company;
create database company;
use company;

CREATE TABLE `employees` (
  `eno` char(3) NOT NULL COMMENT '雇员号',
  `ename` varchar(20) DEFAULT NULL COMMENT '姓名',
  `eage` int DEFAULT NULL COMMENT '年龄',
  `eaddress` varchar(20) DEFAULT NULL COMMENT '地址',
  `esalary` int DEFAULT NULL COMMENT '薪水',
  PRIMARY KEY (`eno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

insert  into `employees`(`eno`,`ename`,`eage`,`eaddress`,`esalary`) values 
('E01','tom',35,'海淀',8000),
('E02','dennis',24,'朝阳',5000),
('E03','john',20,'海淀',4000),
('E04','rick',41,'朝阳',7000),
('E05','bill',45,'西城',7500),
('E06','frank',35,'海淀',6000),
('E07','jank',25,'东城',3000),
('E08','mike',23,'东城',3500);

下面是java代码:

package cn.edu.cqie;

import java.sql.*;

/**
 * @author 李思琪
 */
public class MsqlTest {
    public static void main(String[] args) {
        //127.0.0.1和localhost是等效的,都是连接本地mysql
        //String url = "jdbc:mysql://127.0.0.1:3306/mydatabase?";//指定连接数据库mydatabase
        //不指定数据库直接连接,后面需要调用use语句或create语句创建数据后use数据库
        String url = "jdbc:mysql://localhost:3306/?";
        //设置自己的用户名和密码
        String username = "root";
        String password = "qq2865642661";
        try {
            // 1.加载驱动
            // mysql8.0以上
            Class.forName("com.mysql.cj.jdbc.Driver");
            // mysql8.0以下
            //Class.forName("com.mysql.jdbc.Driver");
            // 2.开始连接
            Connection connection = DriverManager.getConnection(url, username, password);
            // 3.创建执行sql语句对象
            Statement statement = connection.createStatement();
            // 4.创建数据库company
            // sql语句就和在可视化工具或者命令行的一样,分号是必不可少的哦
            StringBuilder sql = new StringBuilder("drop database if exists company;");
            statement.execute(sql.toString());
            sql.setLength(0);
            sql.append("create database company;");
            statement.execute(sql.toString());
            sql.setLength(0);
            // 5.使用数据局company
            statement.execute("use company;");
            // 6.创建表employees
            sql.append("""
                    CREATE TABLE `employees` (
                      `eno` char(3) NOT NULL COMMENT '雇员号',
                      `ename` varchar(20) DEFAULT NULL COMMENT '姓名',
                      `eage` int DEFAULT NULL COMMENT '年龄',
                      `eaddress` varchar(20) DEFAULT NULL COMMENT '地址',
                      `esalary` int DEFAULT NULL COMMENT '薪水',
                      PRIMARY KEY (`eno`)
                    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;""");
            statement.executeUpdate(sql.toString());
            sql.setLength(0);
            sql.append("""
                    insert into `employees` (`eno`,`ename`,`eage`,`eaddress`,`esalary`)values
                    ('E01', 'tom', 35, '海淀', 8000),
                    ('E02', 'dennis', 24, '朝阳', 5000),
                    ('E03', 'john', 20, '海淀', 4000),
                    ('E04', 'rick', 41, '朝阳', 7000),
                    ('E05', 'bill', 45, '西城', 7500),
                    ('E06', 'frank', 35, '海淀', 6000),
                    ('E07', 'jank', 25, '东城', 3000),
                    ('E08', 'mike', 23, '东城', 3500);""");
            statement.executeUpdate(sql.toString());
            sql.setLength(0);
            // 7.查询数据并打印
            sql.append("select * from employees;");
            ResultSet resultSet = statement.executeQuery(sql.toString());
            // 展开结果集数据库
            while (resultSet.next()) {
                // 通过字段检索
                String eno = resultSet.getString("eno");
                String ename = resultSet.getString("ename");
                int eage = resultSet.getInt("eage");
                String eaddress = resultSet.getString("eaddress");
                int esalary = resultSet.getInt("esalary");
                // 输出数据
                System.out.printf("eno: %-10s", eno);
                System.out.printf("ename: %-10s", ename);
                System.out.printf("eage: %-10d", eage);
                System.out.printf("eaddress: %-10s", eaddress);
                System.out.printf("esalary: %-10d", esalary);
                System.out.println();
            }
            // 8.释放连接
            resultSet.close();
            statement.close();
            connection.close();
        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

测试结果:

sqlyog:

        可以看到数据库成功创建,数据也写入了进去。

 idea:

       打印的数据是正确的,说明我们也成功读取到了写入数据库的数据。

其中用到的Statement.execute,Statement.executeUpdate,Statement.executeQuery的区别是:

一般语句用Statement.execute,入创建数据库,use语句等,

Statement.executeUpdate用于修改表的结构和数据,update语句,alter语句等,

Statement.executeQuery用于查询语句,如select等。

其中Statement.execute,Statement.executeUpdate的返回值基本可以忽略,它们所返回的数据基本就是一些用于判断是否正确执行了sql语句,而Statement.executeQuery需要一个ResultSet对象来结束它的返回值,它的返回值是反正的sql语句查询的数据,其成员方法用的比较多的就是getInt,getString等,都是一些mysql支持的数据类型。

        对应关系可以看下面这篇博客哦(感谢):

https://blog.csdn.net/Bleachswh/article/details/54288941?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165157362316782350994807%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165157362316782350994807&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-54288941.142^v9^pc_search_result_cache,157^v4^control&utm_term=mysql%E5%92%8Cjava%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B&spm=1018.2226.3001.4187

        如果代码运行有错误之类的,可以看下有没有打开mysql server 哦!

总结:

        基本就是这样了,第一次写博客,有问题可以一起在评论区交流哦,有错误也请大佬指出呀!

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值