linux下c++操作MySQL

2023-10-29

第一步:先在Linux中安装MySQL

第二步:在安装连接器,中端命令

sudo apt-get install libmysqlclient-dev

第三步写一个操作MySQL的c++代码保存退出

#include<stdio.h>
#include<mysql.h>   //所需头文件
 
int main()
{
	MYSQL *conn_prt;     //创造一个MYSQL句柄
	conn_prt = mysql_init(NULL);  //初始化MYSQL句柄
 
	if(!conn_prt)   //若初始化句柄失败
	{
		printf("connect mysql failed");
		return -1;
	}
 
	/*尝试与mysql数据库连接*/
	if(!mysql_real_connect(conn_prt,"localhost","root"
		,"123456","test",0,NULL,0))
	{
		printf("failed to coonect mysql:%s\n",mysql_error(conn_prt));
	}
 
	else
	{
		printf("connect success...........\n");
	}
 
 
	/*关闭与Mysql数据库的连接,并释放相应内存*/
	mysql_close(conn_prt);
	return 0;
}

第四步编译代码在终端输入回车然后就ok了

g++ -o mysql mysql.cpp -I/usr/include/mysql/ -l mysqlclient

附加自己用c++封装好的初始化mysql

#include<stdio.h>
#include<mysql.h>   //所需头文件
#include<iostream>  
#include<string>
using namespace std;

class 	MySQL
{
	private:
        MYSQL  *MYSQLJB;//mysql句柄
        public:
        void chuanjiangmysqljubing();//创建MySQL句柄    --句柄要是不符合if判断那就是创建句柄失败--
        MYSQL *fanghuimysqljubingleixing();//返回创建的MySQL句柄    --句柄要是不符合if判断那就是创建句柄失败--
        int  yushujukujianlilianjie(MYSQL *JB, const char *ip, const char *yhdrid,const char *yhdrmm,const char *sjkimz,int dk,const char *tjz, int flagxx );//它的第一个参数句柄,第二个为ip地址
	//第三个为登入用户名id,第四个为登入用户名登入用户密码,第五个为数据库名字,第六个为端口,第七个为套接字,第八个为flagxx  --如果成功if能判断,失败if不能判断
	void guanbishujukusifanneicun();//释放数据库
};



//创建MySQL句柄
void MySQL::chuanjiangmysqljubing()
{

this->MYSQLJB= mysql_init(NULL);

}
//返回创建的MySQL句柄
MYSQL * MySQL::fanghuimysqljubingleixing()
{
return this->MYSQLJB; 
}

//它的第一个参数句柄,第二个为ip地址
//第三个为登入用户名id,第四个为登入用户名登入用户密码,第五个为数据库名字,第六个为端口,第七个为套接字,第八个为flagxx  --如果成功if能判断,失败if不能判断


int   MySQL::yushujukujianlilianjie(MYSQL *JB, const char *ip, const char *yhdrid,const char *yhdrmm,const char *sjkmz,int dk,const char *tjz, int flagxx )
{
  if(!mysql_real_connect(JB,ip,yhdrid ,yhdrmm,sjkmz,dk,tjz,flagxx))
  { 
	  return 0;
  }
  else
  {
	  return 1;
  }

}
//释放数据库内存
void MySQL::guanbishujukusifanneicun()
{

 mysql_close(this->MYSQLJB);

}

 
int main()
{
    //创建一个MySQL类
    MySQL A;
    A.chuanjiangmysqljubing();//穿建句柄
    MYSQL *conn_prt= A.fanghuimysqljubingleixing() ;     //获取一个MYSQL句柄
    if(!A.yushujukujianlilianjie(conn_prt,"localhost","root","密码","操作库名字",0,NULL,0))
    {
    cout<<"连接失败";
    }
    mysql_close(conn_prt);

/*	
 *	conn_prt = mysql_init(NULL);  //初始化MYSQL句柄
 
	if(!conn_prt)   //若初始化句柄失败 { printf("connect mysql failed");
	{
	return -1; }
 
	/*尝试与mysql数据库连接*/
	/*
	if(!mysql_real_connect(conn_prt,"localhost","root"
				,"IfWinterComes2019.","javazy",0,NULL,0)) {
		printf("failed to coonect mysql:%s\n",mysql_error(conn_prt)); }
 
	else { printf("connect success...........\n"); }
 
 
	/*关闭与Mysql数据库的连接,并释放相应内存*/
	/*
	mysql_close(conn_prt);
*/	
      



	return 0;
}

Linux操作MySQL实现增删改查

#include <stdio.h>
#include <mysql.h>
#include <string.h>
int main(int argc, const char *argv[])
{
    MYSQL           mysql;
    MYSQL_RES       *res = NULL;
    MYSQL_ROW       row;
    char            *query_str = NULL;
    int             rc, i, fields;
    int             rows;
    if (NULL == mysql_init(&mysql)) {
        printf("mysql_init(): %s\n", mysql_error(&mysql));
        return -1;
    }
    if (NULL == mysql_real_connect(&mysql,
                "localhost",
                "root",
                "密码",
                "操作的库名字",
                0,
                NULL,
                0)) {
        printf("mysql_real_connect(): %s\n", mysql_error(&mysql));
        return -1;
    }
    printf("1. Connected MySQL successful! \n");
//执行插入请求
    query_str = "insert into tb_users values (12345, 'justtest', '2015-5-5')";
    rc = mysql_real_query(&mysql, query_str, strlen(query_str));
    if (0 != rc) {
        printf("mysql_real_query(): %s\n", mysql_error(&mysql));
        return -1;
    }
//执行删除请求
    query_str = "delete from tb_users where userid=10006";
    rc = mysql_real_query(&mysql, query_str, strlen(query_str));
    if (0 != rc) {
        printf("mysql_real_query(): %s\n", mysql_error(&mysql));
        return -1;
    }
//执行修改请求
string sql ="update yonhubiao set huiyuang = '0' where zhanghao = '007' ";
query_str = sql.c_str();

 rc = mysql_real_query(&mysql, query_str, strlen(query_str));
    if (0 != rc) {
        printf("mysql_real_query(): %s\n", mysql_error(&mysql));
        return -1;
    }

//然后查询插入删除之后的数据
    query_str = "select * from tb_users";
    rc = mysql_real_query(&mysql, query_str, strlen(query_str));
    if (0 != rc) {
        printf("mysql_real_query(): %s\n", mysql_error(&mysql));
        return -1;
    }
    res = mysql_store_result(&mysql);
    if (NULL == res) {
         printf("mysql_restore_result(): %s\n", mysql_error(&mysql));
         return -1;
    }
    rows = mysql_num_rows(res);
    printf("The total rows is: %d\n", rows);
    fields = mysql_num_fields(res);
    printf("The total fields is: %d\n", fields);
    while ((row = mysql_fetch_row(res))) {
        for (i = 0; i < fields; i++) {
            printf("%s\t", row[i]);
        }
        printf("\n");
    }
    mysql_free_result(res);
    mysql_close(&mysql);
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux下c++操作MySQL 的相关文章

  • mysql LIKE 查询时间太长

    SQL SELECT COUNT usr id as total results FROM users as usr LEFT JOIN profile as prof ON prof uid usr uid WHERE usr usern
  • 日志中每天的每周活跃用户数

    我想知道是否有人可以帮助我使用一些 SQL 来返回两天或更长时间内登录到数据库表的唯一用户数量 让我们使用 7 天作为参考 我的日志表在每一行中包含时间戳 ts 和 user id 表示该用户当时的活动 以下查询返回此日志中的每日活跃用户数
  • MySQL 跨表计数(*) 查询帮助

    SELECT name COUNT AS count FROM t1 t2 WHERE t2 id t1 id GROUP BY t2 id 我想从 t1 获取名称以及 t2 中 id 与 t1 相同的行数 到目前为止我已经得到了上面的内容
  • 在主目录中安装库

    在 Linux Ubuntu 中 我尝试运行一个工具 但它显示错误 库丢失 我无权在系统中安装任何内容 或者根本无法从我的用户帐户执行 sudo 是否可以在我的主目录 没有 sudo 中安装缺少的库 在我的例子中为 libstdc so 6
  • diff 文件仅比较每行的前 n 个字符

    我有2个文件 我们将它们称为 md5s1 txt 和 md5s2 txt 两者都包含a的输出 find type f print0 xargs 0 md5sum sort gt md5s txt 不同目录下的命令 许多文件被重命名 但内容保
  • 在 Linux 上的 Python 中使用受密码保护的 Excel 工作表

    问题很简单 我每周都会收到一堆受密码保护的 Excel 文件 我必须解析它们并使用 Python 将某些部分写入新文件 我得到了文件的密码 当在 Windows 上完成此操作时 处理起来很简单 我只需导入 win32com 并使用 clie
  • 有没有办法在 MySQL 中有效地对 TRUNCATE 或 DROP TABLE 进行 GRANT ?

    我最近在 MySQL 5 5 x 中尝试过 GRANT SELECT INSERT UPDATE DELETE TRUNCATE ON crawler TO my user localhost WITH GRANT OPTION 这会导致错
  • MySQL 最佳实践:SELECT 子递归尽可能提高性能?

    我想选择一个根项目及其子项 使其性能尽可能高 我更喜欢使用嵌套集模型 但这次表结构遵循邻接模型 有关嵌套集和邻接模型的更多信息 http mikehillyer com articles managing hierarchical data
  • Postgresql 的 SQL_NO_CACHE?

    MySQL 关键字是否有等效的 postgresqlSQL NO CACHE 或 SQL Serverdbcc drop clean buffers 即您可以简单地将其包含在 SQL 语句中或作为脚本的一部分吗 UPDATE 这个问题 查看
  • 在shell命令行中创建mysql触发器

    我需要在命令行中创建一个mysql触发器 这个sql在mysql控制台中运行良好 sql USE DB1 DROP TRIGGER IF EXISTS my trigger DELIMITER CREATE TRIGGER my trigg
  • R:ifelse 中的字符串列表

    我正在寻找与 MySQL 中的 where var in 语句类似的东西 我的代码如下 data lt data frame id 10001 10030 cc1 rep c a b c 10 attach data data new lt
  • 在 Mac OS X 上构建 Linux 内核

    我正在做一个修改Linux内核的项目 我有一台桌面 Linux 机器 在上面构建内核没有问题 不过 我要去旅行 我想在途中工作 我只有一台 MacBook 当我尝试构建 Linux 内核时 它抱怨说elf h was not found 我
  • 修改linux下的路径

    虽然我认为我已经接近 Linux 专业人士 但显然我仍然是一个初学者 当我登录服务器时 我需要使用最新版本的R 统计软件 R 安装在 2 个地方 当我运行以下命令时 which R I get usr bin R 进而 R version
  • 删除重复的行并需要在mysql中保留所有行中的一个[重复]

    这个问题在这里已经有答案了 我想删除基于两列的重复行 但需要保留所有行 1 行 重复行可以多于两行 例如 ID NAME PHONE 1 NIL 1234 2 NIL 1234 3 NIL 1234 4 MES 5989 我想从上面 3 行
  • 重置 MySQL root 密码不起作用

    我花了很多时间阅读并尝试了数十种重置 root 密码的方法 但我一无所获 我发现 并尝试过 的最完整的说明如下 顺便说一句 我在 Win7 32 位上运行 MySQL 5 5 我创建了一个文件 c mysqlinit txt 其中包含两行
  • 为什么我收到“无法进行二进制日志记录”的信息。在我的 MySQL 服务器上?

    当我今天启动 MySQL 服务器并尝试使用以下命令进行一些更改时用于 MySQL 的 Toad http www quest com toad for mysql 我收到此消息 MySQL 数据库错误 无法进行二进制日志记录 消息 交易级别
  • Elasticsearch 无法写入日志文件

    我想激活 elasticsearch 的日志 当我运行 elasticsearch 二进制文件时 我意识到我在日志记录方面遇到问题 无法加载配置 这是输出 sudo usr share elasticsearch bin elasticse
  • 在 Linux 上更快地分叉大型进程?

    在现代 Linux 上达到与 Linux 相同效果的最快 最好的方法是什么 fork execve combo 从一个大的过程 我的问题是进程分叉大约 500MByte 大 并且一个简单的基准测试只能从进程中实现约 50 个分叉 秒 比较最
  • Bash 解析和 shell 扩展

    我对 bash 解析输入和执行扩展的方式感到困惑 对于输入来说 hello world 作为 bash 中的参数传递给显示其输入内容的脚本 我不太确定 Bash 如何解析它 Example var hello world displaywh
  • 强制卸载 NFS 安装目录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案

随机推荐

  • Excel VBA应用:单元格的字母自动大写转换等操作

    Private Sub Worksheet SelectionChange ByVal Target As Range 所有单元格进行字母大写转换 Application EnableEvents False Target VBA UCas
  • hc-05 模块教程2 (两个hc-05连接)

    http www arduino cn thread 21735 1 1 html 最近在做项目需要建立两个hc 05通讯 但网上教程有限和有很多都不是很清楚所以整合了下资料重新做了一份个人认为比较详细的教程和大家一起分享学习 这个教程说明
  • 给github项目贡献代码详细步骤

    本文以 dlink 项目为例 1 fork 第一步是打开 github 上的项目地址 然后点击页面右上角的 fork 按钮 将项目 fork 到自己账号的仓库 记得登录自己的 github 账号 具体看下面图示 这个页面 不需要修改什么参数
  • PHP 常用的设计模式跟使用场景

    策略模式 把类中可能改变的方法用成员属性替换 属性是实现对应方法接口的类 本来直接调用类方法 修改后就是调用成员属性类的方法 这样可以在运行时给类设置不同的成员属性达到动态改变调用的方法 使用 Model 类 持有 Query 类 通过调用
  • Android 项目调用第三方库so动态库

    在Android NDK开发中 可以通过自己编写C C 代码来构建so动态库进行调用之外 还可以把so动态库提供给第三方使用 接下来 我将介绍在新创建的Android 项目 或已存在的Android 项目 中如何调用第三方so动态库 关于如
  • ChatGPT的原理与前端领域实践

    一 ChatGPT 简介 ChatGPT的火爆 ChatGPT作为一个web应用 自22年12月发布 仅仅不到3个月的时间 月活用户就累积到1亿 在此之前 最快记录的保持者也需要9个月才达到月活1亿 ChatGPT的反爬 https cha
  • 02-react组件基础-函数组件-类组件(有状态和无状态组件)-事件处理(this指向)-setState修改状态-表单处理(受控组件和非受控组件)-案例

    学习目标 能够使用函数创建组件 函数组件 能够掌握class语法 extends继承 能够使用class创建组件 类组件 能够给React元素绑定事件 能够使用state与setState 能够处理事件中this的指向问题 能够使用受控组件
  • mysql,oracle,sqlserver之表备份

    mysql表备份 1 只复制表结构到新表 只有结构无数据 create table 新表 select from 旧表 where1 2 或create table 新表 like 旧表 此两种方法的区别 使用第一条语句 备份的新表并没有旧
  • C++之共享智能指针shared_ptr的实现

    目录 概念 使用标准库共享智能指针 共享智能指针底层实现 概念 共享指针是可以 由多个栈上智能指针对象 同时托管同一堆上资源的 因为shared ptr的内部实现引用计数来管理有多少智能指针指向了这块堆上资源 当一个共享智能指针出栈时 引用
  • 人脸建模1

    宝宝 把眼睛球体控制器和簇点的translate属性关联之后 选中眼睛一圈隔一个选一个面 给上nhair毛囊 删除结算器等 只留图中鼠标所在位置 毛囊分别对对应位置控制器父子约束 所有控制器做好之后一定要冻结 舌头控制器前面的组p给后面的盒
  • 二、C++语言进阶:动态库与静态库之函数篇

    2 动态库与静态库之函数篇 作用 分离编译 代码重用 分类 分类 作用 后缀 静态库 一个或多个 o目标文件归档在一个文件中 a 共享库 没有main函数的可执行文件 so 动态加载库 没有main函数的可执行文件 接口复合API so 2
  • 让树叶摇动起来

    Shader XW Tree TreeLeaf Simple Properties Color Main Color Color 1 1 1 1 clipAlpha clip Alpha Range 0 1 0 5 MainTex Base
  • Nginx 服务器

    简介 Nginx 是一款HTTP和反向代理服务器 它的内存占用少 能够支持高达五万个并发连接响应 其主要有三个功能 反向代理 负载均衡 反向代理 正向代理 就相当于 VPN 当你想要访问一个服务器但是由于某种原因不能直接访问时 可以去访问一
  • 如何使用 Vagrant 命令行工具创建和管理虚拟机

    创建和管理虚拟机曾经是一个乏味且耗时的过程 在不同的服务器上复制虚拟机也可能具有挑战性 如果必须复制多个虚拟机 情况会变得更加困难 但后来 Vagrant 出现了 它是一种通常与2 类虚拟机管理程序配合使用的命令行或 shell 工具 你可
  • QT从入门到实战x篇_06_信号和槽2:自定义信号和槽函数的创建及使用

    接上文 QT从入门到实战x篇 xx 信号和槽1 Qt中自带的信号和槽函数的使用方法本文主要介绍如何根据自身的功能需要 创建和使用自定义信号及槽函数 先写出一个功能需求 下课后 老师触发信号 饿了 学生响应信号 请客吃饭 1 建立老师类和学生
  • jquery ztree实现下拉树形框,json数据

    公司最近的项目需要用到树形下拉框 在网上找了挺多源码 最后还是采用了zTree来实现 因为代码的移植性比较高 而且数据的获取比较容易 废话不多说 直接上代码 index jsp
  • 轻量应用服务器腾讯云和阿里云哪家更好?

    轻量应用服务器阿里云和腾讯云哪个好 云服务器吧认为腾讯云轻量应用服务器还不错 腾讯云轻量服务器30元起 配置可选2核2G3M 2核2G4M 2核4G5M 4核8G12M 8核16G18M和16核32G28M 阿里云轻量应用服务器配置仅可以选
  • C语言函数大全-- w 开头的函数(1)

    w 开头的函数 1 1 wcscat 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 wcschr 2 1 函数说明 2 2 演示示例 2 3 运行结果 3 wcscmp 3 1 函数说明 3 2 演示示例 3 3 运行结果 4
  • AHB接口总线仲裁1主多从细节。关于hready in和hready out信号的理解

    所有slaver 只要有1个hready out等于0 表示slaver没有准备好执行此拍操作 这时 所有slaver都不能执行此拍操作 以防止1主多从的AHB接口协议问题 所有slaver的hreadyout 需要与之后 提供给所有sla
  • linux下c++操作MySQL

    第一步 先在Linux中安装MySQL 第二步 在安装连接器 中端命令 sudo apt get install libmysqlclient dev 第三步写一个操作MySQL的c 代码保存退出 include