C/C++连接MySql数据库使用总结( 二 )


1>d:我的文档Visual Studio 2008ProjectsMySql-ConnectDebugMySql-Connect.exe : fatal error LNK1120: 10 个无法解析的外部命令 
1>生成日志保存在“file://d:我的文档Visual Studio 2008ProjectsMySql-ConnectMySql-ConnectDebugBuildLog.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.tbl_name.col_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 错误CR_COMMANDS_OUT_OF_SYNC
命令以一个不适当的次序被执行 。
CR_SERVER_GONE_ERROR
MySQL服务器关闭了 。
CR_SERVER_LOST
对服务器的连接在查询期间失去 。
CR_UNKNOWN_ERROR
发生一个未知的错误 。
2.3 mysql_real_query2.3.1 函数原型int mysql_real_query(MYSQL *mysql, const char *query, unsigned int length)
2.3.2 参数说明执行由query指向的SQL查询,它应该是一个length个字节的字符串 。查询必须由一个单个的SQL语句组成 。你不应该在语句后增加一个终止的分号(“;”)或g 。


推荐阅读