C++的Mysql常用API

#include<mysql.h>
//用于链接libmysql.lib库的宏,这样就不需要在VS里面去配置链接器了
#pragma comment(lib, "libmysql.lib")
class MySqlAPI{
private:
    //数据库配置信息
    const char* host = "127.0.0.1";//mysql所在IP地址
    const char* user = "root";//Mysql账户名称
    const char* password = "root";//对应账户的密码
    const char* dbName = "mydatabase";//数据库名称
public:
    void API
    {
    	//相当于和mysql之间的连接,增删改查都需要它
    	MYSQL mysql;
         //初始化一下mysql的环境
    	mysql_init(&mysql);
    	//连接mysql,如果有错误就返回0
    	if (!mysql_real_connect(&mysql, host, user, password, dbName, 3306, 0, 0)) {
    		std::cout << "数据库 " << dbName << " 连接失败\n";
    	}
    	/******************查*****************/
		//1.固定的参数sql语句(字符串必须使用单引号括起来,否则运行就出错)
    	char sql[] = "select * from account where id='120'";
    	//2.动态传递参数的sql 使用的sprintf函数填补参数的空白
    	char sqlFmt[] = "select * from account where id='%s'";
    	char sql2[1024];
    	sprintf(sql2, sqlFmt, "aaa");
    	//执行一次数据库的sql语句,如果返回1就证明有错误
    	//ps:sql语句必须是char*的字符串,所以如果使用的string,运行就会出错
    	//解决办法就是:string str="select...."; str.c_str();//c_str():把string转为char*的字符串D
    	if (mysql_query(&mysql, sql2)) {
    		//mysql_errno返回mysql报错的错误编号 mysql_error返回具体的报错信息
    		cout << "sql语句错误:" << mysql_errno(&mysql) << mysql_error(&mysql) << endl;
    	}
    	MYSQL_RES* result = mysql_store_result(&mysql);
    	MYSQL_ROW row;//对应mysql表格中的一行信息
    	//依次读取存放在MYSQL_RES里的每一行数据
    	while (row = mysql_fetch_row(result)) {
    		//这里只是一个举例,可以通过索引的形式取得
    		//一行sql数据中的每一个数据(下标的顺序是和定义mysql数据表的属性对应的)
    		//返回的都是字符长串类型的
    		//可以通过atoi(row[0])或atof(row[0])转换为int型或double型
    		cout << row[0] << row[1];//....
    	}
    	mysql_free_result(result);//释放sql结果的资源
    	/******************删、改、查************************/
    	//删改查的函数都是一样的:1.创建sql语句,2.放入query函数执行(char*类型)
    	//3.检查是否报错  或者说查询也是一样的套路,只是最后要通过MYSQL_RES与MYSQL_ROW获取查询结果数据
    	char sql3[] = "*****";
    	if (mysql_query(&mysql, sql3)) {
    		cout << "sql语句错误:" << mysql_error(&mysql) << endl;
    	}
        /**********************执行事务********************************/
        string sql="begin";//开始事务
        mysql_query(&mysql,sql.c_str());
        char  sqlFmt[]="insert into account values('%s','%s')";
        char sql4[1024];
        for(int i=0,i<100;++i){
            sprintf(sql4,sqlFmt,to_string(i).c_str(),to_string(i).c_str());
            if(mysql_query(&mysql,sql4)){
                cout<<"插入数据异常:"<<mysql_error()<<endl;
                //事务提交出错 进行回滚,撤销前面的提交
                if (mysql_query(&mysql, "rollback")) {
					cout << "回滚失败:" << mysql_error(&mysql) << endl;
	   			}
            }
        }
        mysql_query(&mysql,"commit");//提交事务
        /***********************************************************/
    	mysql_close(&mysql);//关闭数据库连接
     }
}
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值