C++中使用MySQL

页面导航:首页 > 数据库 > Mysql > C++中使用MySQL

C++中使用MySQL

来源: 作者: 时间:2016-01-22 08:34 【

我的电脑上的软件如下:VS2012 MySQL 5 6操作系统是64位win8 11 前提下载并安装MySQL 2 配置(1)在项目中 属性》C 43; 43;》常规》添加附加包含目录:MY_SQL的目录 include(2)在项目中 属性》

我的电脑上的软件如下:

VS2012

MySQL 5.6

操作系统是64位win8.1

1.前提

并安装MySQL

2.配置

(1)在项目中 属性》C++》常规》添加附加包含目录:MY_SQL的目录/include

(2)在项目中 属性》连接器》常规》添加附加库目录:MY_SQL的目录/lib

(3)在项目中 属性》连接器》输入》添加附加依赖项:lib.lib

3.注意事项

如果已经按上述配置好但是还是编译不通过,提示:

1> 正在生成代码...

1>BaseDB.obj : error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 "public: bool __thiscall BaseDB::openConnect(void)" ([email protected]@@QAE_NXZ) 中被引用
1>BaseDB.obj : error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 "public: bool __thiscall BaseDB::openConnect(void)" ([email protected]@@QAE_NXZ) 中被引用
1>BaseDB.obj : error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 "public: struct st_mysql_res * __thiscall BaseDB::doQuery(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" ([email protected]@@QAEPAUst_mysql_res@@[email protected][email protected]@[email protected]@@Z) 中被引用
1>BaseDB.obj : error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 "public: struct st_mysql_res * __thiscall BaseDB::doQuery(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" ([email protected]@@QAEPAUst_mysql_res@@[email protected][email protected]@[email protected]@@Z) 中被引用
1>BaseDB.obj : error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 "public: void __thiscall BaseDB::closeConnect(void)" ([email protected]@@QAEXXZ) 中被引用
1>DBUtil.obj : error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 "public: static bool __cdecl DBUtil::checkUserLogin(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" ([email protected]@@[email protected][email protected]@[email protected]) 中被引用
1>E:/Flighting/MySQLtest/ConsoleApplication1/Debug/ConsoleApplication1.exe : fatal error LNK1120: 6 个无法解析的外部命令
1>

1>生成失败。

这个问题的产生原因是:你装的MySQL64位的,而VS2012默认的运行平台是32位的所以不支持

解决办法有两个:(1)项目属性》右上角有一个配置管理器》把你的项目的运行平台改为X64(如果没有就新建一个)

(2)如果项目中已经引入了其他32位的附加库,贸然修改成64位会导致原来的库编译不通过,这样没办法只好上网搜一个mysql32为的lib和dll

最后,如果运行时提示找不到libmysql.dll 就把libmysql,dll复制到System32/SysWow64 吧

代码实例:

 

#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql.h> 
#include <iostream>
using namespace std;

int main()
{
    const char user[] = "root";         //username
    const char pswd[] = "root";         //password
    const char host[] = "localhost";    //or"127.0.0.1"
    const char table[] = "test";        //database
    unsigned int port = 3306;           //server port        
    MYSQL myCont;
    MYSQL_RES *result;
    MYSQL_ROW sql_row;
    MYSQL_FIELD *fd;
    char column[32][32];
    int res;
    mysql_init(&myCont);
    if(mysql_real_connect(&myCont,host,user,pswd,table,port,NULL,0))
    {
        cout<<"connect succeed!"<<endl;
        mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文
        res=mysql_query(&myCont,"select * from samples");//查询
        if(!res)
        {
            result=mysql_store_result(&myCont);//保存查询到的数据到result
            if(result)
            {
                int i,j;
                cout<<"number of result: "<<(unsigned long)mysql_num_rows(result)<<endl;
                for(i=0;fd=mysql_fetch_field(result);i++)//获取列名
                {
                    strcpy(column[i],fd->name);
                }
                j=mysql_num_fields(result);
                for(i=0;i<j;i++)
                {
                    printf("%s\t",column[i]);
                }
                printf("\n");
                while(sql_row=mysql_fetch_row(result))//获取具体的数据
                {
                    for(i=0;i<j;i++)
                    {
                        printf("%s\n",sql_row[i]);
                    }
                    printf("\n");
                }
            }
        }
        else
        {
            cout<<"query sql failed!"<<endl;
        }
    }
    else
    {
        cout<<"connect failed!"<<endl;
    }
    if(result!=NULL) mysql_free_result(result);//释放结果资源
    mysql_close(&myCont);//断开连接
    return 0;
}


 

Tags:

相关文章

    文章评论

    最 近 更 新
    热 点 排 行
    Js与CSS工具
    代码转换工具
    
    <