• C++ 操作 MySQL


    使用VS2008如IDE, 准备操作:


    1. 项目属性  C++ 其他包括文件夹 为 mysql 安装文件夹的include
    如:"C:Program Files (x86)MySQLMySQL Server 5.6include"

    2. 链接器  常规  附加库文件夹  路径为 mysql 安装文件夹的lib
    "C:Program Files (x86)MySQLMySQL Server 5.6lib"

    3. 链接器  输入  附加依赖项  路径为 mysql 为 libmysql.lib 所在文件夹,
    如 "C:Program Files (x86)MySQLMySQL Server 5.6liblibmysql.lib"
    注:这里的文件文件夹路径由于有空格。所以一定要用 " " 包括起来!

    !!

    4. 将 mysql 文件夹下的 libmysql.dll 文件复制到 debug 文件夹下,这个非常重要!!。!


    代码:

    #include <iostream>
    #include <winsock2.h>
    #include <string>
    
    #include "mysql.h"
    
    #pragma comment(lib, "libmysql.lib");
    
    using namespace std;
    
    int main()
    {
    	MYSQL mysql;
    	mysql_init(&mysql);		// 初始化
    
    	MYSQL *ConnStatus = mysql_real_connect(&mysql,"localhost","root","","sky",3306,0,0);
    	if (ConnStatus == NULL)
    	{
    		// 连接失败
    		int i = mysql_errno(&mysql);
    		string strError= mysql_error(&mysql);
    		cout <<"Error info: "<<strError<<endl;
    
    		return 0;
    	}
    
    
    	cout<<"Mysql Connected..."<<endl;
    	
    	string strsql;
    	MYSQL_RES *result=NULL;		// 数据结果集
    
    
    	// 插入操作
    	strsql = "insert into t1 values(2,'lyb')";
    
    	if(0 == mysql_query(&mysql,strsql.c_str()))
    	{
    		cout<<"insert ok"<<endl;
    	}
    	else
    	{
    		cout<<"insert error"<<endl;
    		return 0;
    	}
    	
    
    	//查询
    	strsql = "select * from t1";
    
    	if(0 == mysql_query(&mysql,strsql.c_str()))
    	{
    		cout<<"select ok"<<endl;
    		result = mysql_store_result(&mysql);		// 获取结果放到 result中
    	}
    	else
    	{
    		cout<<"select error"<<endl;
    		return 0;
    	}
    
    	//返回记录集总数
    	int rowcount = mysql_num_rows(result);
    	cout<<"row count :"<<rowcount<<endl;
    
    	//取得表的字段数组 数量
    	unsigned int feildcount = mysql_num_fields(result);
    	cout<<"feild count: " << feildcount <<endl;	
    	cout << endl;
    
    	//字段指针 遍历字段
    	MYSQL_FIELD *feild = NULL;
    	for(unsigned int i = 0; i<feildcount;i++)
    	{
    		feild = mysql_fetch_field_direct(result,i);
    		cout<<feild->name<<"	";
    	}
    	cout << endl;
    	
    
    	//行指针 遍历行
    	MYSQL_ROW row =NULL;
    	while (NULL != (row = mysql_fetch_row(result)) )
    	{
    		for(int i=0; i<feildcount;i++)
    		{
    			cout<<row[i]<<"	";
    		}
    		cout<<endl;
    	}
    	
    	cout<<endl;
    
    	//释放结果集 关闭数据库
    	mysql_free_result(result);
    	mysql_close(&mysql);
    	mysql_library_end();
    
    	return 0;
    }
    
    //官方文档參考
    //http://dev.mysql.com/doc/refman/5.1/zh/apis.html
    


    执行结果



    官方文件参考  http://dev.mysql.com/doc/refman/5.1/zh/apis.html


  • 相关阅读:
    pins-模块内的代码及资源隔离方案
    Android Gradle defaultConfig详解及实用技巧
    实用抓包工具:whistle
    Gradle中的闭包
    Android Gradle 依赖配置:implementation & api
    Android Studio Run项目出现Failure [INSTALL_FAILED_TEST_ONLY]
    Android 8.0对隐式广播的进一步限制
    cookie 详解
    一分钟内搭建全web的API接口神器json-server详解
    高性能前端 art-template 模板
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5032206.html
Copyright © 2020-2023  润新知