c连接mysql_CC++连接MySql数据库的⽅法
⼀、VS2008⼯程设置⼯作
⾸先,建⽴⼀个windows应⽤程序的⼯程,将C/C++->预处理器->预处理器定义下的_WINDOWS改为_CONSOLE,
将连接器->系统->⼦系统 选择为控制台。
由于我们要使⽤Mysql的API,并且我们机⼦上肯定安装了Mysql数据库,所以我们要将⼯程的头⽂件路径指向Mysql安装⽬录的同⽂件mysql.h所在的位置,将连接库路径指向libmysql.lib所在的路径,
在我的机⼦上,Mysql 的安装路径为:C:\Program Files\MySQL\MySQL Server 5.1
我们需要把VS2008的⼯程中的头⽂件路径和连接库路径指向上⾯的两个地⽅:
将x项⽬属性页的C/C++->常规->附加包含⽬录指向:C:\Program Files\MySQL\MySQL Server 5.1\include
将项⽬属性页的链接器->常规->附加库⽬录指向:C:\Program Files\MySQL\MySQL Server 5.1\lib\opt.
将链接器->输⼊->附加依赖项中添加libmysql.lib。
如果不设置链接器->输⼊->附加依赖项中添加libmysql.lib,那么会出现如下的错误:
1>------ 已启动全部重新⽣成: 项⽬: MySql-Connect, 配置: Debug Win32 ------
1>正在删除项⽬“MySql-Connect”(配置“Debug|Win32”)的中间⽂件和输出⽂件
1>正在编译...
1>MySql_Connect.cpp
1>x:\编程练习\c-c++\c\mysql_connect.cpp(35) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 参见“scanf”的声明
1>x:\编程练习\c-c++\c\mysql_connect.cpp(72) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366) : 参见“sprintf”的声明
1>x:\编程练习\c-c++\c\mysql_connect.cpp(86) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366) : 参见“sprintf”的声明
1>正在编译资源清单...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>正在链接...
1>LINK : 没有到 d:\我的⽂档\Visual Studio 2008\Projects\MySql-Connect\ 或上⼀个增量链接没有⽣成它;正在执⾏完全链接
1>MySql_Connect.obj : error LNK2019: ⽆法解析的外部符号 _mysql_close@4,该符号在函数 _main 中被引⽤
1>MySql_Connect.obj : error LNK2019: ⽆法解析的外部符号 _mysql_free_result@4,该符号在函数 _main 中被引⽤
1>MySql_Connect.obj : error LNK2019: ⽆法解析的外部符号 _mysql_num_fields@4,该符号在函数 _main 中被引⽤
1>MySql_Connect.obj : error LNK2019: ⽆法解析的外部符号 _mysql_fetch_row@4,该符号在函数 _main 中被引⽤
1>MySql_Connect.obj : error LNK2019: ⽆法解析的外部符号 _mysql_store_result@4,该符号在函数 _main 中被引⽤
1>MySql_Connect.obj : error LNK2019: ⽆法解析的外部符号 _mysql_error@4,该符号在函数 _main 中被引⽤
1>MySql_Connect.obj : error LNK2019: ⽆法解析的外部符号 _mysql_real_query@12,该符号在函数 _main 中被引⽤
1>MySql_Connect.obj : error LNK2019: ⽆法解析的外部符号 _mysql_select_db@8,该符号在函数 _main 中被引⽤
1>MySql_Connect.obj : error LNK2019: ⽆法解析的外部符号 _mysql_real_connect@32,该符号在函数 _main 中被引⽤
1>MySql_Connect.obj : error LNK2019: ⽆法解析的外部符号 _mysql_init@4,该符号在函数 _main 中被引⽤
mysql数据库的方法1>d:\我的⽂档\Visual Studio 2008\Projects\MySql-Connect\ : fatal error LNK1120: 10 个⽆法解析的外部命令
1>⽣成⽇志保存在“file://d:\我的⽂档\Visual Studio 2008\Projects\MySql-Connect\MySql-Connect\Debug\BuildLog.htm”
1>MySql-Connect - 11 个错误,3 个警告
========== 全部重新⽣成: 成功 0 个,失败 1 个,跳过 0 个 ==========
⼆、连接Mysql和从MySql中取出数据的API介绍
2.1 mysql_real_connect()
2.1.1 函数原型:
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned int client_flag)
2.1.2 参数说明:
·
第⼀个参数应该是⼀个现存MYSQL结构的地址。在调⽤mysql_real_connect()之前,你必须调⽤mysql_init()初始化MYSQL结构。见下⾯的例⼦。
· host值可以是⼀个主机名或⼀个IP地址。如果host是NULL或字符串"localhost",假定是到本地主机的⼀个连接。如果OS⽀持套接字(Unix)或命名管道(Win32),使⽤他们⽽不是TCP/IP与服务器连接。
· user参数包含⽤户的MySQL登录ID。如果user是NULL,假定是当前⽤户。在Unix下,它是当前登录名。在Windows ODBC下,必须明确地指定当前⽤户名字。见16.4 怎样填写ODBC管理程序中各种域。
· passwd参数为user包含⼝令。如果passwd是NULL,只有在user表中对于有⼀个空⽩⼝令字段的⽤户的条⽬将被检查⼀个匹配。这允许数据库主管设置MySQL权限,使⽤户获得不同的⼝令,取决于他们是否已经指定⼀个⼝令。注意:不要试图在调⽤
mysql_real_connect()前加密⼝令;⼝令加密⾃动被客户API处理。
· db是数据库名。如果db不是NULL,连接将缺省数据库设置为这个值。
· 如果port不是0,值对于TCP/IP连接将⽤作端⼝号。注意host参数决定连接的类型。
· 如果unix_socket不是NULL,字符串指定套接字或应该被使⽤的命名管道。注意host参数决定连接的类型。
· client_flag值通常是0,但是在很特殊的情况下可以被设置为下列标志的组合:
标志名字 意味着的标志
CLIENT_FOUND_ROWS 返回到的(匹配的)⾏数,不是受到影响的⾏数。
CLIENT_NO_SCHEMA 不允许db_name.l_name语法。这是为了ODBC;如果你使⽤该语法,导致语法分析器产⽣⼀个错误,它是为在⼀些ODBC程序捕捉错误是有⽤的。
CLIENT_COMPRESS 使⽤压缩协议。
CLIENT_ODBC 客户是⼀个ODBC客户。这使mysqld变得对ODBC更友好。
2.1.3 返回值
如果连接成功,⼀个 MYSQL*连接句柄。如果连接失败,NULL。对⼀个成功的连接,返回值与第⼀个参数值相同,除⾮你传递NULL给该参数。
2.1.4 错误
CR_CONN_HOST_ERROR
不能连接MySQL服务器。
CR_CONNECTION_ERROR
不能连接本地MySQL服务器。
CR_IPSOCK_ERROR
不能创建⼀个IP套接字。
CR_OUT_OF_MEMORY
内存溢出。
CR_SOCKET_CREATE_ERROR
不能创建⼀个Unix套接字。
CR_UNKNOWN_HOST
不能到主机名的IP地址。
CR_VERSION_ERROR
由于试图使⽤⼀个不同协议版本的⼀个客户库与⼀个服务器连接导致的⼀个协议失配。如果你使⽤⼀个⾮常⽼的客户库连接⼀个没有使⽤--old-protocol选项启动的新服务器,这就能发⽣。
CR_NAMEDPIPEOPEN_ERROR;
不能在 Win32 上创建⼀个命名管道。
CR_NAMEDPIPEWAIT_ERROR;
不能在 Win32 上等待⼀个命名管道。
CR_NAMEDPIPESETSTATE_ERROR;
不能在 Win32 上得到⼀个管道处理器。
2.2 mysql_select_db()
2.2.1 函数原型
int mysql_select_db(MYSQL *mysql, const char *db)
2.2.2 参数说明
使得由db指定的数据库成为 在由mysql指定的连接上的缺省(当前)数据库。在随后的查询中,这个数据库对于不包括⼀个显式的数据库指定符的表的引⽤是缺省数据库。
除⾮连接的⽤户能被认证允许使⽤数据库,否则mysql_select_db()失败。
2.2.3 返回值
成功,零。如果发⽣⼀个错误,⾮零。
2.2.4 错误

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。