vc++连接mysql

yuhan1573 2009-05-05 05:59:46
小弟新手,最近想在VC中做个程序去访问mysql数据库。
环境:2003或者2005机子上都有
语言:C++

本来查了点资料,mysql官网上有mysqlconnector-c++下载,没搞定。
后来发现mysql++,老是安装编译不成功。。。

有没有大侠熟悉这东西的,能不能把具体安装步骤贴上来啊,谢谢了!
...全文
240 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
KaKaKaKa 2011-06-01
  • 打赏
  • 举报
回复
mark
saiyaman5 2009-05-07
  • 打赏
  • 举报
回复
搞得这么复杂干吗,用odbc连接不就行了吗,和其它数据库一样用
还没淹死的鱼 2009-05-06
  • 打赏
  • 举报
回复
用安装完的dll不就行么, ++是什么?
joyer688 2009-05-06
  • 打赏
  • 举报
回复
观望中
yuhan1573 2009-05-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 Conry 的回复:]
引用 8 楼 yuhan1573 的回复:
首先下的是mysql解压版的,不是5.0是5.1官网上下载的。
其次下载了mysql++3.0.9也是最新版本的。


里面应该有例子代码吧,例子里面的应用还是比较全的
[/Quote]

俺不是要求例子的,是想能正确安装mysql++配置好环境,能进入编程阶段。
Conry 2009-05-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yuhan1573 的回复:]
首先下的是mysql解压版的,不是5.0是5.1官网上下载的。
其次下载了mysql++3.0.9也是最新版本的。
[/Quote]

里面应该有例子代码吧,例子里面的应用还是比较全的
_free 2009-05-06
  • 打赏
  • 举报
回复
引入lib文件可以用 #pragma comment(lib,"XX.lib")
yuhan1573 2009-05-06
  • 打赏
  • 举报
回复
首先下的是mysql解压版的,不是5.0是5.1官网上下载的。
其次下载了mysql++3.0.9也是最新版本的。
闪破风浪 2009-05-06
  • 打赏
  • 举报
回复
你下载的是MySql的开发包?
还是安装文件呀?
yuhan1573 2009-05-06
  • 打赏
  • 举报
回复
我不是想要参考程序代码~~
关键现在还到不了能正常编程那一步!

下面是从网上找的安装步骤:

2.8. 安装 MySQL++

类似iconvpp对iconv的封装,MySQL++同样是采用C++对MySQL 原有C接口的封装。当希望通过C++语言实现访问MySQL数据库时,MySQL++是一个非常好的选择。

2.8.1. 下载

请前往MySQL++官方主页:http://tangentsoft.net/mysql++/ ,下载MySQL++的最新版本源文件(Source Code),当前版本为:“mysql++-3.0.6.tar.gz”。

请解压下载所得文件,在Windows操作系统下,您可以使用WinRAR或7zip工具。假设“mysql++3.0.6.tar.gz”被解压到 “C:\TEMP”目录下,则本节后文所提的“MySQL++解压目录”均指“C:\TEMP\mysql++-3.0.6”。其中 “mysql++-3.0.6”在解压后自动得到。

2.8.2. 编译、安装

步骤1:修改Makefile。

如果您确信之前将MySQL安装到“C:\Program Files\MySQL\MySQL Server 5.0” 下(注意,必须是C盘),请跳过本步。

打开“MySQL++解压目录”下的Makefile.mingw文件(注意扩展名)。通过“查找,替换”方法,将所有“C:\Program Files\MySQL\MySQL Server 5.0” 替换成在您机器上MySQL的实际安装路径,比如“E:\Program Files\MySQL\MySQL Server 5.0”。

保存Makefile.mingw。

〖危险〗: 折行造成替换过程遗漏!

强烈注意: 在Makefile.mingw文件 第40行、及 第 90 行,“C:\Program Files\MySQL\MySQL Server 5.0” 被折成两行,所以前面的查找会漏过它,请手工替换这两处的内容,否则,将造成后面编译时直接出错。



步骤 2: 生成 libmysqlclient.lib 导入库。

点击开始菜单,选择“运行”,在弹出的对话框中,输入cmd,回车进入控制台。假如MySQL的安装目录为:“C:\Program Files\MySQL\MySQL Server 5.0”,则在控制台的执行命令如下:

C: [回车] cd Program Files\MySQL\MySQL Server 5.0\lib\opt [回车]

dlltool -k -d C:\TEMP\mysql++-3.0.6\libmysqlclient.def -l libmysqlclient.a [回车]

其中“l”,全部为字母“L”的小写形式。

请注意将“C:\TEMP\mysql++-3.0.6”替换为您实际的MySQL++源文件解压后目录。

如果最后一行命令执行后出现“‘dlltool’不是内部或外部命令……”的消息,请复读本章讲解安装Code::Blocks的小节,检查是否正确安装Mingw32环境。

命令执行成功,则在 C:\Program Files\MySQL\MySQL Server 5.0\lib\opt 下,将生成“libmysqlclient.lib”文件。

步骤 3: 编译源代码。

点击开始菜单,选择“运行”,在弹出的对话框中,输入cmd,回车进入控制台。在控制以下切换到“MySQL++解压目录”,即本例中的 “C:\TEMP\mysql++-3.0.6”,则在控件台内执行的命令为:

C: [回车]

cd temp\mysql++-3.0.6 [回车]

mingw32-make -f Makefile.mingw [回车]

最后一行命令,将在“C:\TEMP\mysql++-3.0.6”目录下产生大量“* .o” 和 “.o.d” 的中间文件(这些文件可以删除),同时也生成多个可执行的例子文件。

步骤 4: 安装编译结果。

假设之前创建的C++扩展库统一目录为“E:\cpp_ex_libs”。请双击“MySQL++解压目录”下的“install.hta”文件,在弹出的对话框中,选择“E:\cpp_ex_libs”;并勾上“Install in versioned folder”选项;最后占击“Install Now”开始安装。


步骤1,2没问题,到了步骤3中:mingw32-make -f Makefile.mingw [回车] 这一步就编译不成功了,一大堆的错误!

yuhan1573 2009-05-06
  • 打赏
  • 举报
回复
我就是这么设置的,库的路径是/lib/opt,另一个是lib/debug.连接的时候是提示libmysql.dll找不到。。。晕了
Conry 2009-05-06
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 yuhan1573 的回复:]
引用 15 楼 Conry 的回复:

什么叫能进入编程阶段?
有.h,.lib文件不就能编程了么?
难道是lz的mysql由于配置不正确…


刚接触这东西,有点乱。
能在VS下编程连接mysql数据库到底需要什么??
是不是只需要安装了mysql以后,就可以利用其目录下的include文件夹内的h文件与lib库就可以编程了???
那编程接口mysql++还需要不需要?
我在程序中已经在项目的属性里设置了头文件和库的路径,可链接的时候仍然提…
[/Quote]

把库的路径加到项目属性应该可以了,连接的时候应该是libmysql.lib库找不到吧,不过MySQL的库提供了两个版本,路径不是到lib就行了,而是到lib\debug或lib\release(记不清具体名称了)
另外连接器-》输入-》附加依赖项里面也要加上libmysql.lib

另配置编译环境跟用什么库没关系,所有你要用的的库的头文件,lib文件都要加到项目属性,以便编译器去指定目录搜索
yuhan1573 2009-05-06
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 Conry 的回复:]

什么叫能进入编程阶段?
有.h,.lib文件不就能编程了么?
难道是lz的mysql由于配置不正确…
[/Quote]

刚接触这东西,有点乱。
能在VS下编程连接mysql数据库到底需要什么??
是不是只需要安装了mysql以后,就可以利用其目录下的include文件夹内的h文件与lib库就可以编程了???
那编程接口mysql++还需要不需要?
我在程序中已经在项目的属性里设置了头文件和库的路径,可链接的时候仍然提示找不到libmysql.dll库,我甚至将这个库拷贝到了工程目录下都没用...
还没淹死的鱼 2009-05-06
  • 打赏
  • 举报
回复
惭愧, 我用的是安装版, 没改过什么

看了一下mysql++的例子, 原来我用的就是啊, 汗......
Conry 2009-05-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yuhan1573 的回复:]
引用 9 楼 Conry 的回复:
引用 8 楼 yuhan1573 的回复:
首先下的是mysql解压版的,不是5.0是5.1官网上下载的。
其次下载了mysql++3.0.9也是最新版本的。


里面应该有例子代码吧,例子里面的应用还是比较全的


俺不是要求例子的,是想能正确安装mysql++配置好环境,能进入编程阶段。
[/Quote]
什么叫能进入编程阶段?
有.h,.lib文件不就能编程了么?
难道是lz的mysql由于配置不正确不能启动?还是lz不会配置VS开发环境
自己解压的当然要自己配置my.conf文件了(记不清是不是这个文件名了),自己不会配就用安装版
另解压版的也应该有个配置向导的程序,执行它跟你用安装版的一样,他也是在安装完成后调用的这个程序
另外原来我安装的时候也遇到一个问题,就是这个配置向导手工配置的话,在注册表里面的数据会有问题,要自己手动修改(而安装版的不会有问题,不知道是不是工作目录不对引起的)
比如你的路径是c:\mysql\bin 在注册表的路径是c:\mysql\bin\bin 多了一级,不知道lz是不是遇到了这个问题

还没淹死的鱼 2009-05-06
  • 打赏
  • 举报
回复
没用过那个编程接口, 我用的时候把mysql.h加进去就OK了
yuhan1573 2009-05-06
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 qiandayong 的回复:]
用安装完的dll不就行么, ++是什么?
[/Quote]

mysql++是一组mysql提供的C++编程接口。
xsc2001 2009-05-05
  • 打赏
  • 举报
回复
1、首先要安装mysql数据库服务器,并让其运行
2、在你的工程中添加访问mysql的头文件:#include "mysql.h" 和lib文件:libmysql.lib
3、写具体的访问函数,给你一个例子代码:

int CServer::GetNewTaskFromDb()
{
char szInfo[256];
memset(szInfo, 0, 256);
MYSQL * mysql;
MYSQL_RES * res;
MYSQL_ROW row;

char sql[500];

mysql = mysql_init(NULL);

if (!mysql_real_connect(mysql, m_serverPara.MySql.szDbIp,m_serverPara.MySql.szUserName,
m_serverPara.MySql.szPassword,m_serverPara.MySql.szDbName,0,NULL,0))
{
sprintf(szInfo, "Failed to connect to database: Error: %s\n",
mysql_error(mysql));
mysql_close(mysql);
AddLogRecord(szInfo);
return -1;
}

memset(sql,0,500);
sprintf(sql, "select * from %s where status = 0;", m_serverPara.MySql.szTableName);

if(mysql_query(mysql,sql))
{
sprintf(szInfo,"%s\n",sql);
AddLogRecord(szInfo);
sprintf(szInfo, "Failed to query Error: %s\n",
mysql_error(mysql));
AddLogRecord(szInfo);
mysql_close(mysql);
return -1;
}

res = mysql_store_result(mysql);

unsigned int num_fields;

num_fields = mysql_num_fields(res);

int nRecCount = 0;
while ((row = mysql_fetch_row(res)))
{
unsigned long *lengths;
lengths = mysql_fetch_lengths(res);

sprintf(szInfo, "%s\0", row[0]);
TaskInfo task;
memset(&task, 0, sizeof(TaskInfo));
task.nTaskId = atoi(szInfo);
sprintf(task.szContent, "%s\0", row[2]);
string strName = row[3]; //取得条3个字段值
string strunicom = row[4]; //
string strchinanc = row[5]; //
nRecCount++;
}

mysql_free_result(res);
mysql_close(mysql);
return nRecCount;
}
djh512 2009-05-05
  • 打赏
  • 举报
回复
我以前装过 SVRVER2000和VC做 学生管理系统,结果也是搞不转 顶一下 ~
yayafu 2009-05-05
  • 打赏
  • 举报
回复
看看为什么编译不成功嘛
加载更多回复(2)

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧