vscode中使用C++实现mysql数据库编程(附带相关案例)

windows下vscode连接Linux中的MySQL教程见:https://blog.csdn.net/weixin_47156401/article/details/129469835?spm=1001.2014.3001.5501

分布式数据库,顾名思义:分布式+数据库。用一句话总结为:由多个独立实体组成,并且彼此通过网络进行互联的数据库。

使用vscode连接Linux中的mysql,并进行mysql开发,对于初学者来讲多少有些摸不着头脑,下面给出mysql的建库、建表,以及增、删、改、查等基本操作。

一、代码解读

(1)主函数

#include<iostream>
#include<mysql.h>
#include<cstring>
#include<istream>
#include<vector>

using namespace std;

MYSQL mysql;            //mysql连接
MYSQL_FIELD*fd;         //字段列数组
char field[32][32];     //存字段名二维数组
MYSQL_RES *res;         //这个结构代表返回行的一个查询结果集
MYSQL_ROW column;       //一个行数据的类型安全(type-safe)的表示,表示数据行的列

bool ConnectDatabase(); //函数声明
void FreeConnect();
bool InsertData();      //增
bool ModifyData();      //改
bool DeleteData();      //删


int main(){
    ConnectDatabase();
    InsertData();
    ModifyData();
    DeleteData();
    mysql_close(&mysql);
    return 0;
}

(2)连接Linux中的mysql并进行创建库(my_database)、表(my_table)操作

//连接mysql并创建库和表
bool ConnectDatabase(){
    //初始化mysql连接
    mysql_init(&mysql);                 //等价于&mysql=mysql_init(NULL);

    const char host[]="localhost";
    const char user[]="root";
    const char psw[]="123456";
    //const char table[]="test";        //需要链接的数据库,如果已经创建了直接连接即可

    const int port =3306;

    //返回false则连接失败,返回true则连接成功
    if(!mysql_real_connect(&mysql, host, user, psw, NULL, port, NULL,0))
    {
        //中间分别是主机,用户名,密码,数据库名,端口号(可以写默认0或者3306等),可以先写成参数再传进去
        cout<<"Error connecting to database:"<<mysql_error(&mysql)<<endl;
        return false;
    }
    else
    {
        cout<<"Connected..."<<endl;
    }

    //-------------创建库-------------//
    char *drop_db_query = "DROP DATABASE IF EXISTS my_database";
    mysql_query(&mysql, drop_db_query);

    string db_name= "CREATE DATABASE IF NOT EXISTS my_database";

    //执行库创建语句,返回0表示执行成功,返回1表示执行失败
    int result=mysql_query(&mysql,db_name.c_str());

    if(result){
        cout<<"库创建失败!"<<endl;
        return false;
    }else{
        cout<<"student库创建成功......"<<endl;
    }

    // //-------------连接数据库-------------//
    // if(!mysql_real_connect(&mysql, host, user, psw, "my_database", port, NULL,0))
    // {
    //     //中间分别是主机,用户名,密码,数据库名,端口号(可以写默认0或者3306等),可以先写成参数再传进去
    //     cout<<"Error connecting to database:"<<mysql_error(&mysql)<<endl;
    //     return false;
    // }
    // else
    // {
    //     cout<<"Connected..."<<endl;
    //     return true;
    // }

    //选择数据库
    if (mysql_select_db(&mysql, "my_database")) {
        cout<<"选择数据库失败!"<<mysql_error(&mysql)<<endl;
        return false;
    }

    //-------------在my_database库中创建表-------------//
    char *drop_table_query = "DROP TABLE IF EXISTS my_table";
    mysql_query(&mysql, drop_table_query);

    string table="CREATE TABLE IF NOT EXISTS my_table (id int, name VARCHAR(20), number VARCHAR(20), email VARCHAR(20))";

    if (mysql_query(&mysql, table.c_str())) {
        cout << "user创建失败!" << mysql_error(&mysql) << endl;
        return false;
    }else{
        cout << "user创建成功......"<<endl;
    }
}

(3)往表(my_table)中插入数据

//插入数据
bool InsertData(){

    //插入数据
    string query="INSERT INTO my_table (id, name, number, email) VALUES (1, 'liubei', '33333333', '165438490@qq.com')";
    
    //执行SQL语句
    if(mysql_query(&mysql, query.c_str())){
        cout<<"数据插入失败!"<<mysql_error(&mysql)<<endl;
        return false;
    }
    else
    {
        cout<<"数据插入成功!"<<endl;
    }

    //插入数据
    string data1="insert into my_table values(2, 'guanyu', '22222222', '163438490@qq.com');";
    mysql_query(&mysql, data1.c_str());

    //插入数据
    string data2="insert into my_table values(3, 'zhangfei', '11111111', '164438490@qq.com');";
    mysql_query(&mysql, data2.c_str());

    // select and print data
    string query2 = "SELECT * FROM my_table";

    if (mysql_query(&mysql, query2.c_str())) {
        cout<<"数据查询失败!"<<mysql_error(&mysql)<<endl;
        return false;
    }

    MYSQL_RES *res = mysql_use_result(&mysql);
    MYSQL_ROW row;
    
    while ((row = mysql_fetch_row(res)) != NULL) {
        cout<<row[0]<<"   "<<row[1]<<"   "<<row[2]<<"   "<<row[3]<<endl;
    }
    mysql_free_result(res);
}

(4)修改表(my_table)中的数据

//修改数据
bool ModifyData(){
    //修改内容
    string query="UPDATE my_table SET email='166438490@qq.com' where name='liubei'";

    //执行SQL语句
    if(mysql_query(&mysql, query.c_str())){
        cout<<"修改数据失败!"<<mysql_error(&mysql)<<endl;
        return false;
    }else{
        cout<<"数据修改成功!"<<endl;
    }

    // select and print data
    string query2 = "SELECT * FROM my_table";

    if (mysql_query(&mysql, query2.c_str())) {
        cout<<"数据查询失败!"<<mysql_error(&mysql)<<endl;
        return false;
    }

    MYSQL_RES *res = mysql_use_result(&mysql);
    MYSQL_ROW row;
    
    while ((row = mysql_fetch_row(res)) != NULL) {
        cout<<row[0]<<"   "<<row[1]<<"   "<<row[2]<<"   "<<row[3]<<endl;
    }
    mysql_free_result(res);
}

(5)删除表(my_table)中的指定数据

//删除数据
bool DeleteData(){
    /*eg: "DELETE FROM my_table where id=2";*/
    string query="DELETE FROM my_table where id=2";
    cout<<"please input the sql:"<<endl;
    getline(cin,query);//这里手动输入sql语句

    //执行SQL语句
    if(mysql_query(&mysql, query.c_str())){
        cout<<"删除数据失败!"<<mysql_error(&mysql)<<endl;
        return false;
    }else{
        cout<<"成功删除数据!"<<endl;
    }

    // select and print data
    string query2 = "SELECT * FROM my_table";

    if (mysql_query(&mysql, query2.c_str())) {
        cout<<"数据查询失败!"<<mysql_error(&mysql)<<endl;
        return false;
    }

    MYSQL_RES *res = mysql_use_result(&mysql);
    MYSQL_ROW row;
    
    while ((row = mysql_fetch_row(res)) != NULL) {
        cout<<row[0]<<"   "<<row[1]<<"   "<<row[2]<<"   "<<row[3]<<endl;
    }
    mysql_free_result(res);
}

(6)释放资源

//释放资源
void FreeConnect(){
    mysql_free_result(res);     //释放一个结果集合使用的内存。
    mysql_close(&mysql);        //关闭一个服务器连接。
}

二、完整代码

#include<iostream>
#include<mysql.h>
#include<cstring>
#include<istream>
#include<vector>

using namespace std;

MYSQL mysql;            //mysql连接
MYSQL_FIELD*fd;         //字段列数组
char field[32][32];     //存字段名二维数组
MYSQL_RES *res;         //这个结构代表返回行的一个查询结果集
MYSQL_ROW column;       //一个行数据的类型安全(type-safe)的表示,表示数据行的列

bool ConnectDatabase(); //函数声明
void FreeConnect();
bool InsertData();      //增
bool ModifyData();      //改
bool DeleteData();      //删


int main(){
    ConnectDatabase();
    InsertData();
    ModifyData();
    DeleteData();

    mysql_close(&mysql);
    return 0;
}

//连接mysql并创建库和表
bool ConnectDatabase(){
    //初始化mysql连接
    mysql_init(&mysql);                 //等价于&mysql=mysql_init(NULL);

    const char host[]="localhost";
    const char user[]="root";
    const char psw[]="123456";
    //const char table[]="test";        //需要链接的数据库,如果已经创建了直接连接即可

    const int port =3306;

    //返回false则连接失败,返回true则连接成功
    if(!mysql_real_connect(&mysql, host, user, psw, NULL, port, NULL,0))
    {
        //中间分别是主机,用户名,密码,数据库名,端口号(可以写默认0或者3306等),可以先写成参数再传进去
        cout<<"Error connecting to database:"<<mysql_error(&mysql)<<endl;
        return false;
    }
    else
    {
        cout<<"Connected..."<<endl;
    }

    //-------------创建库-------------//
    char *drop_db_query = "DROP DATABASE IF EXISTS my_database";
    mysql_query(&mysql, drop_db_query);

    string db_name= "CREATE DATABASE IF NOT EXISTS my_database";

    //执行库创建语句,返回0表示执行成功,返回1表示执行失败
    int result=mysql_query(&mysql,db_name.c_str());

    if(result){
        cout<<"库创建失败!"<<endl;
        return false;
    }else{
        cout<<"student库创建成功......"<<endl;
    }

    // //-------------连接数据库-------------//
    // if(!mysql_real_connect(&mysql, host, user, psw, "my_database", port, NULL,0))
    // {
    //     //中间分别是主机,用户名,密码,数据库名,端口号(可以写默认0或者3306等),可以先写成参数再传进去
    //     cout<<"Error connecting to database:"<<mysql_error(&mysql)<<endl;
    //     return false;
    // }
    // else
    // {
    //     cout<<"Connected..."<<endl;
    //     return true;
    // }

    //选择数据库
    if (mysql_select_db(&mysql, "my_database")) {
        cout<<"选择数据库失败!"<<mysql_error(&mysql)<<endl;
        return false;
    }

    //-------------在my_database库中创建表-------------//
    char *drop_table_query = "DROP TABLE IF EXISTS my_table";
    mysql_query(&mysql, drop_table_query);

    string table="CREATE TABLE IF NOT EXISTS my_table (id int, name VARCHAR(20), number VARCHAR(20), email VARCHAR(20))";

    if (mysql_query(&mysql, table.c_str())) {
        cout << "user创建失败!" << mysql_error(&mysql) << endl;
        return false;
    }else{
        cout << "user创建成功......"<<endl;
    }
}


//释放资源
void FreeConnect(){
    mysql_free_result(res);     //释放一个结果集合使用的内存。
    mysql_close(&mysql);        //关闭一个服务器连接。
}

/******************************数程库操作***********************************/

//插入数据
bool InsertData(){

    //插入数据
    string query="INSERT INTO my_table (id, name, number, email) VALUES (1, 'liubei', '33333333', '165438490@qq.com')";
    
    //执行SQL语句
    if(mysql_query(&mysql, query.c_str())){
        cout<<"数据插入失败!"<<mysql_error(&mysql)<<endl;
        return false;
    }
    else
    {
        cout<<"数据插入成功!"<<endl;
    }

    //插入数据
    string data1="insert into my_table values(2, 'guanyu', '22222222', '163438490@qq.com');";
    mysql_query(&mysql, data1.c_str());

    //插入数据
    string data2="insert into my_table values(3, 'zhangfei', '11111111', '164438490@qq.com');";
    mysql_query(&mysql, data2.c_str());

    // select and print data
    string query2 = "SELECT * FROM my_table";

    if (mysql_query(&mysql, query2.c_str())) {
        cout<<"数据查询失败!"<<mysql_error(&mysql)<<endl;
        return false;
    }

    MYSQL_RES *res = mysql_use_result(&mysql);
    MYSQL_ROW row;
    
    while ((row = mysql_fetch_row(res)) != NULL) {
        cout<<row[0]<<"   "<<row[1]<<"   "<<row[2]<<"   "<<row[3]<<endl;
    }
    mysql_free_result(res);
}

//修改数据
bool ModifyData(){
    //修改内容
    string query="UPDATE my_table SET email='166438490@qq.com' where name='liubei'";

    //执行SQL语句
    if(mysql_query(&mysql, query.c_str())){
        cout<<"修改数据失败!"<<mysql_error(&mysql)<<endl;
        return false;
    }else{
        cout<<"数据修改成功!"<<endl;
    }

    // select and print data
    string query2 = "SELECT * FROM my_table";

    if (mysql_query(&mysql, query2.c_str())) {
        cout<<"数据查询失败!"<<mysql_error(&mysql)<<endl;
        return false;
    }

    MYSQL_RES *res = mysql_use_result(&mysql);
    MYSQL_ROW row;
    
    while ((row = mysql_fetch_row(res)) != NULL) {
        cout<<row[0]<<"   "<<row[1]<<"   "<<row[2]<<"   "<<row[3]<<endl;
    }
    mysql_free_result(res);
}

//删除数据
bool DeleteData(){
    /*eg: "DELETE FROM my_table where id=2";*/
    string query="DELETE FROM my_table where id=2";
    cout<<"please input the sql:"<<endl;
    getline(cin,query);//这里手动输入sql语句

    //执行SQL语句
    if(mysql_query(&mysql, query.c_str())){
        cout<<"删除数据失败!"<<mysql_error(&mysql)<<endl;
        return false;
    }else{
        cout<<"成功删除数据!"<<endl;
    }

    // select and print data
    string query2 = "SELECT * FROM my_table";

    if (mysql_query(&mysql, query2.c_str())) {
        cout<<"数据查询失败!"<<mysql_error(&mysql)<<endl;
        return false;
    }

    MYSQL_RES *res = mysql_use_result(&mysql);
    MYSQL_ROW row;
    
    while ((row = mysql_fetch_row(res)) != NULL) {
        cout<<row[0]<<"   "<<row[1]<<"   "<<row[2]<<"   "<<row[3]<<endl;
    }
    mysql_free_result(res);
}

若有帮到你,点个赞,留下你的脚印哦!

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据库内核

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值