C++的Mysql常用API

    科技2022-07-13  123

    #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);//关闭数据库连接 } }
    Processed: 0.014, SQL: 8