C++中使用MySQL

我的电脑上的软件如下:

VS2012

MySQL 5.6

操作系统是64位win8.1

1.前提

下载并安装MySQL

2.配置

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

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

(3)在项目中 属性》连接器》输入》添加附加依赖项:libmysql.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]@@[email protected]@[email protected][email protected]@[email protected]@[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]@@[email protected]@[email protected][email protected]@[email protected]@[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]@[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;
}
时间: 2024-10-12 06:26:16

C++中使用MySQL的相关文章

windows中使用mysql配置my.ini时的坑

windows中安装mysql的一般步骤: mysql版本:5.7.16 1.解压 2.把解压的文件夹bin目录地址添加到环境变量PATH里面 3.在文件加中添加配置文件my.ini--配置内容后面说,坑的所在 3.cmd(管理员模式)cd到bin目录里,执行命令 mysqld -install mysql --default-file= my.ini的物理路径 (这句命令是添加mysql服务,并把my.ini设为配置文件) 4.第3步成功后,继续执行命令 mysqld --initialize

大并发大数量中的MYSQL瓶颈与NOSQL介绍

NoSQL在2010年风生水起,大大小小的Web站点在追求高性能高可靠性方面,不由自主都选择了NoSQL技术作为优先考虑的方面.今年伊始,InfoQ中文站有幸邀请到凤凰网的孙立先生,为大家分享他之于NoSQL方面的经验和体会. 非 常荣幸能受邀在InfoQ开辟这样一个关于NoSQL的专栏,InfoQ是我非常尊重的一家技术媒体,同时我也希望借助InfoQ,在国内推动NoSQL 的发展,希望跟我一样有兴趣的朋友加入进来.这次的NoSQL专栏系列将先整体介绍NoSQL,然后介绍如何把NoSQL运用到自

Linux系统中安装MySQL数据库操作手册

Linux系统中MySQL数据库安装手册 一.安装概述: 在Linux操作系统中安装MySQL数据库是一个我们必须要掌握的一门技术,也决定了你以后找工作的薪资待遇,所以你知道它的厉害了吧!学会安装只是第一步,你还得学好数据库的基本操作,以及搭建一个数据库的主从配置等等.这些我都会在后面的博文中说到.下面我就简单的写一些安装MySQL数据库的一些步骤,仅供参考,如有什么不妥的地方,还请见谅! 二.安装步骤: (一)基本准备工作 1.打开虚拟机,在虚拟机中下载好最新版的MySQL数据库的压缩包.在M

php中的mysql和mysqli的总结

php中mysql和mysqli的总结 首先php-mysql 是 php 操作 mysql 资料库最原始的的拓展 而php-mysqli,字母i代表的 Improvement ,提更了相对进阶的功能. 推荐学习和使用mysqli mysql是非持继连接函数而mysqli是永远连接函数 也就是说mysql每次链接都会打开一个连接的进程 而mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销 默认情况下,从php5开始,php不在自动开启对mysql的支持,而是放到扩展函数库

Flask中使用mysql

Flask中使用mysql 先安装相关模块: pip  install  Flask-MySQL 先准备一下数据库 登录: mysql  -u  root  -p 创建Database和创建Table mysql> CREATE DATABASE EmpData; mysql> use EmpData; mysql> CREATE TABLE User( userId INT NOT NULL AUTO_INCREMENT, userName VARCHAR(100) NOT NULL,

Go语言中使用MySql数据库

Go语言中使用MySql数据库 1.MySQL驱动 Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常用的有如下几种: https://github.com/Go-SQL-Driver/MySQL 支持database/sql,全部采用go写. https://github.com/ziutek/mymysql 支持database/sql,也支持自定义的接口,全部采用go写. https://github.com/Phil

Fedora中允许mysql远程访问的几种方式

Fedora中允许mysql远程访问,可以使用以下三种方式:a.改表. mysql>use mysql; mysql>update user set host = '%' where user = 'root'; mysql>select host, user from user; b.授权.例如,你想root使用123456从任何主机连接到mysql服务器. mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY

在python中使用mysql

缘由 最近在折腾一个小东西需要抓取网上的页面,然后进行解析,将结果放到数据库中.了解到Python在这方面有优势,便选用之.因为我有台服务器上面安装有mysql,自然使用之.在进行数据库的这个操作过程中遇到了不少问题,这里记录一下,大家共勉. python中mysql的调用 百度之后可以通过MySQLdb进行数据库操作,查看文档,了解到python中提供了一个mysql时直接实现了mysql的c语言API.MySQLdb是对其在更高一层的封装,因此,使用起来更加方便.我们可以使用mysql,但更

shell中创建mysql库和执行sql脚本

以前执行oracle脚本都是放到plsql中执行 mysql 脚本执行: (1).先创建一个worlddb库 (2).导入sql脚本: 这就ok啦,哈哈.

Windows中使用MySQL 批处理(五)

一.如何批量执行语句 1.将脚本存成一个脚本文件,比如company.sql 2.执行命令 mysql -h 主机 -u 用户名 -p <d:\dbdata\company.sql Enter password:****** 二.分页显示 mysql -h 主机 -u 用户名 -p <d:\dbdata\company.sql | more 三.捕获输出结果 1.输出的文件companyresult.out mysql -h 主机 -u 用户名 -p <d:\dbdata\company