<mySql完全手册>2011031401

【实践】

MySql和C部分实践

环境:

Vs2005+Xp+Sp3

MySql Server 5.0

库文件和头文件路径分别:

D:\Program Files\MySQL\MySQL Server 5.0\lib\debug

D:\Program Files\MySQL\MySQL Server 5.0\include

实践过程:

1、新建Windows32 Console程序

2、引用头文件#include <mysql>

编译,出现错误,找不到头文件~

在Xp环境变量中添加路径,再编译,仍然找不到~

看来只有在vs2005的环境配置中处理,实际操作:

工具->选项->项目和解决方案->VC++目录,这里有一个库文件路径和头文件路径,分别添加相应的路径

继续编译,错误,mysql_com.h中找不到my_socket类型~

具体指向这句话:int my_connect(my_socket s, const struct sockaddr *name, unsigned int namelen,
           unsigned int timeout);

网上查询需要#include <winsock.h>在#include <mysql.h>前面,ok,添加了,细细想下,应该还有问题:没有引用库文件

随后,在当前项目属性中,找到:配置属性->链接器->输入->附加依赖项

录入:D:\Program Files\MySQL\MySQL Server 5.0\lib\debug\mysqlclient.lib wsock32.lib

杯具,错误Lnk1104,找不到D:\program.obj~

其实最开始我直接拷贝的路径,串"D:\Program Files\MySQL\MySQL Server 5.0\lib\debug\mysqlclient.lib

这个的错误也是上面那个,后面改成无引号的,还是这个错~

linker高级命令中显示如下:你会发现路径错误(红色部分)

/OUT:"d:\My Documents\Visual Studio 2005\Projects\LibMath\Debug\TestMysql.exe" /INCREMENTAL /NOLOGO /MANIFEST /MANIFESTFILE:"Debug\TestMysql.exe.intermediate.manifest" /DEBUG /PDB:"d:\My Documents\Visual Studio 2005\Projects\LibMath\debug\TestMysql.pdb" /SUBSYSTEM:CONSOLE /MACHINE:X86 /ERRORREPORT:PROMPT "D:\Program Files\MySQL\MySQL Server 5.0\lib\debug\mysqlclient.lib wsock32.lib  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

最后查询到,在引用库需要""来锁定完整路径的库,

最后在附加依赖项保存是这个串:"D:\Program Files\MySQL\MySQL Server 5.0\lib\debug\mysqlclient.lib" wsock32.lib

编译,出现错误lnk2005,lnk2019,这个错误是运行库问题,浏览下项目属性,发现当前运行库为MDd;那么我只能改成MTd

编译,成功了~

F5运行,cmd窗口出现“Error in connection:null”字符

ok,检查了,是帐号错误,本来是root,在这里用成sa了

修改成root,编译运行,出现字符"Query executed successfully"

到这里基本上算运行了一个正常的实践流程,至少在链接mySql server和简单查询上已经成功了~hoho

下面贴出h和cpp文件:

1 // stdafx.h : 标准系统包含文件的包含文件,
2  // 或是经常使用但不常更改的
3  // 特定于项目的包含文件
4  //
5  
6  #pragma once
7
8
9  #define WIN32_LEAN_AND_MEAN // 从 Windows 头中排除极少使用的资料
10 #include <stdio.h>
11 #include <tchar.h>
12
13 #include <winsock.h>//这个文件在mysql.h的前面哈
14
15  // TODO: 在此处引用程序需要的其他头文件
16  #include <mysql.h>
1 // TestMysql.cpp : 定义控制台应用程序的入口点。
2 //
3
4 #include "stdafx.h"
5
6
7
8 int _tmain(int argc, _TCHAR* argv[])
9 {
10 MYSQL mysql;
11 MYSQL_RES * result;
12
13 mysql_init(&mysql);
14
15 if (!(mysql_real_connect(&mysql ,"localhost" ,"root" ,"sa" ,"library" ,0 ,NULL ,0)))
16 {
17 fprintf(stderr, "Error in connection:%s\n");
18 return 0;
19 }
20
21 if (mysql_query(&mysql ,"Select * from tbmembers") != 0)
22 {
23 fprintf(stdout ,"Error in query\n");
24 }
25 else
26 {
27 fprintf(stdout ,"Query executed successfully\n");
28 }
29
30 mysql_close(&mysql);
31
32 return 0;
33 }

好,这个算结束了本次实践过程的记录

结论:

1、mysqlclient.lib运行库是MTd,多线程静态库;对应Release版本就是MT

2、mysql.h头文件还是依赖winsock.h,说明其开发的基础还是在sock,属于sock扩展应用

posted @ 2011-03-14 15:20  西就东城  阅读(858)  评论(1编辑  收藏  举报