MATLAB连接MYSQL数据库,并进行增删操作

本文介绍了如何在Matlab中使用新版本UI界面与MySQL数据库进行交互,包括环境配置(安装MySQL、DBeaver数据库管理软件及驱动)、参数设置(连接到数据库、创建表和执行SQL操作)、以及实例分析(数据增删改查操作)。
摘要由CSDN通过智能技术生成

近期做个实验管理系统,matlab新版UI界面交互式相对还算友好,初学mysql,之前没接触过数据库,做个记录。

一、环境安装

1.确保matlab安装了database toolbox,可以通过ver命令查询;

2.下载合适的mysql版本,进入mysql官网,往下一直拉,有个选项“MySQL Community (GPL) Downloads »”->选择MySQL Installer for Windows->版本选择8.035(选个新的版本,不过选哪个都行),下载安装即可;

3.下载数据库管理软件DBeaver,选个免费版的用着就行,安装时候选择exe程序安装能有中文版,不然选个英文版也行,安装过DBeaver后,打开软件,数据库->找到Mysql进行连接,中间需要下载驱动程序,一并下载了(注意这个驱动,驱动版本很重要,DBeaver默认的驱动显然是好的,点击数据库->驱动管理器-mysql->库可以看到当前mysql的驱动,截止到文章写时候我用的驱动是8.0.29);

4.下载并安装驱动,通过https://mvnrepository.com/artifact/mysql/mysql-connector-java这个网站下载驱动,下载后,把驱动放置在matlab的toolbox下面的文件夹中,不过位置无所谓,和路径对应上即可,可以放置以下文件夹中D:\install\matlab\toolbox\local,然后在这个文件夹中找到classpath.txt文件,打开,在最后一行添加$matlabroot/toolbox/local/mysql-connector-java-8.0.29.jar,关闭关闭并重启matlab。至此,配置已全部结束,可以进行操作了,可以直接看第四部分,实例分析。

二、设置参数,连接到数据库(这块尝试不少次才成功)

1.常用的连接参数如下所示,其中dbname如果刚开始建立数据库时没有可以不用写,以''替代;password是安装Mysql时候填写的密码,一般都是自己设置;dbport在Mysql中默认的是3306。

dbhost = 'localhost';   % 数据库主机名
dbport = 3306;          % 数据库端口号
dbname = 'test';       % 数据库名称
username = 'root';      % 数据库用户名
password = 'xxx'; % 数据库密码

2.创建数据库连接对象

% 创建数据库连接对象
conn = database('', username, password, 'Vendor', 'MySQL', 'Server', dbhost, 'Port', dbport);

需要说明的是目前数据库并未指定具体的数据库名称,可以随后创建

3.测试数据库是否连接成功

if isopen(conn)
    disp('成功连接到数据库!');
else
    error('无法连接到数据库。');
end

4.在确认数据库连接成功后,假设要创建名为"my_database"的数据库

create_query = 'CREATE DATABASE IF NOT EXISTS my_database;';
exec(conn, create_query);
conn1=database('my_database', username, password, 'Vendor', 'MySQL', 'Server', dbhost, 'Port', dbport);

三、数据库的增删

数据库增加的格式采用exec(conn,sql语句)格式,如 exec(conn, 'insert into test values(''3'',''李五'')'),增添操作的SQL语句为 insert into 表 values("",""),在进行完操作后,我们重新查看MySQL数据库,观察增添操作是否成功。

数据库进行修改操作,也就是所谓的更新操作,这里我们所使用的SQL语句为update(conn,'test',{'ID'},5,'where name=''赵四'''),其中的conn可以视为我们这次操作的全局变量,这个语句的意思是,将name为赵四的ID更新为5,其中的ID和name都是user表中的列变量,其中ID为主键。我们执行完该操作后,查询数据库。

进行数据库删除操作,也就是从数据库的user表中,删除某行数据,这里删除的SQL语句为

curs = exec(conn,'delete from test where ID = ''5''') 里面具体的限制条件,在where之后,可以自己设定,这里我们设定的是删除在数据库user表中ID为5的数据。

这一块参考:MATLAB对MySQL数据库进行增删改查_51CTO博客_mysql数据库增删改查

1.数据库的增加可以参照2.4操作即可,数据库的删除可以采用以下语句

% 假设要删除名为"my_database"的数据库
drop_query = 'DROP DATABASE IF EXISTS my_database;';
exec(conn, drop_query);

2.数据内容的增删

try
    % 随意给定个数据源
    data_source = struct('country', {'China', 'United States', 'Germany', 'India'}, ...
                     'city', {'Beijing', 'New York', 'Berlin', 'Delhi'}, ...
                     'school', {'Tsinghua University', 'Harvard University', 'Technical University of Munich', 'Indian Institute of Technology'}, ...
                     'class', {'Physics', 'Computer Science', 'Engineering', 'Mathematics'});
    % 创建表格
    exec(conn, 'CREATE TABLE IF NOT EXISTS my_table0 (id INT PRIMARY KEY AUTO_INCREMENT, country VARCHAR(255), city VARCHAR(255), school VARCHAR(255), class VARCHAR(255));');
    % 假设data_source是包含了国家、城市、学校和班级数据的数据源
    
    % 如果有外部数据库的话,采用这种插入方法
    for i = 1:length(data_source)
        % 提取国家、城市、学校和班级数据
        country = data_source(i).country;
        city = data_source(i).city;
        school = data_source(i).school;
        class = data_source(i).class;    
        % 插入数据到表格中
        insert_query = sprintf('INSERT INTO my_table0 (country, city, school, class) VALUES (''%s'', ''%s'', ''%s'', ''%s'')', country, city, school, class);
        exec(conn, insert_query);
    end
    disp('数据已成功插入数据库。');
   
    % 如果一个个插入的话,应该怎么操作呢?
    % 假设要删除国家为China的记录
    delete_query = 'DELETE FROM my_table0 WHERE country = "China";';
    exec(conn, delete_query);
    disp('数据删除成功。');
    % 加入要删除表格my_table
    % 假设要删除名为"my_table"的表格
    drop_query = 'DROP TABLE IF EXISTS my_table;';
    exec(conn, drop_query);
    disp('表格删除成功。');
catch exception
    error(['发生错误:', exception.message]);
end

四、实例分析

% 设置数据库连接参数
dbhost = 'localhost';   % 数据库主机名,设为本地主机
dbport = 3306;          % 数据库端口号
dbname = 'lab';       % 数据库名称
username = 'root';      % 数据库用户名
password = 'xxx'; % 数据库密码

% 创建数据库连接对象
conn = database(dbname, username, password, 'Vendor', 'MySQL', 'Server', dbhost, 'Port', dbport);
% 创建表格
exec(conn, ['CREATE TABLE IF NOT EXISTS lab_test1(id INT AUTO_INCREMENT PRIMARY KEY, time_ VARCHAR(255),' ...
                ' name_ VARCHAR(255), source_ VARCHAR(255), number_ VARCHAR(255),type_ VARCHAR(255),belong_ VARCHAR(255),' ...
                'who_ VARCHAR(255),position_ VARCHAR(255));']);
% 数据库插入采用 exce(conn,sql语句)格式
if isopen(conn)
    disp('成功连接到数据库!');
    % 数据库删除操作
    exec(conn,'delete from lab_test1 where id="12"');
    % 数据库增加操作
    exec(conn,'insert into lab_test1(time_,name_,source_,number_,type_,belong_,who_,position_) values("2023-11-14", "xiaozhang","nafei","20","wu","小明","左1","22")');
    % 数据库查找操作
    data=fetch(exec(conn, 'SELECT * FROM lab_test1'));
    data.Data
    % 数据库修改操作
    % update(conn,tablename,colnames,data,whereclause)
    update(conn,'lab_test1',{'number_'},{'21'},'where number_=20')
else
    error('无法连接到数据库。');
end
close(conn)

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值