API:http: //dev.mysql.com/doc/refman/5.1/zh/apis.html
数据库:mysql
开发工具:vc6.0
1、设置Project Settings下的C/C++,选择Category的CodeGeneration,设置use run-time library为Multithreaded,原因是数据库需要使用到多线程
2、设置Tools下Options的Directories选项,将mysql安装目录下的include文件夹路径加入Include files,或者直接将include文件夹下的mysql.h拷到工程目录下,然后缺什么文件,放心,编译器会叫的
3、将mysql目录下\lib\opt中的libmysql.lib拷到工程目录下
#include <winsock2.h>
#include <stdio.h>
#include "mysql.h"
#pragma comment(lib, "libmysql.lib")
int main()
{
MYSQL mysql;
mysql_init(&mysql);
if(mysql_real_connect(&mysql, "localhost", "root", "123456", "test", 0, NULL, CLIENT_MULTI_STATEMENTS) != NULL)
{
printf( "客户端版本信息:%s\n", mysql_get_client_info());
printf( "客户端版本信息:%u\n", mysql_get_client_version());
printf( "描述连接的字符串:%s\n", mysql_get_host_info(&mysql));
printf( "服务器的版本号:%u\n", mysql_get_server_version(&mysql));
printf( "连接所使用的协议版本:%u\n", mysql_get_proto_info(&mysql));
printf( "服务器的版本号:%u\n", mysql_get_server_info(&mysql));
mysql_real_query(&mysql, "select * from user", sizeof( "select * from user")-1);
MYSQL_RES *res;
if((res = mysql_use_result(&mysql)) == NULL)
{ /*如果查询未返回结果集,mysql_store_result()将返回Null指针(例如,如果查询是INSERT语句)。
如果读取结果集失败,mysql_store_result()还会返回Null指针。通过检查mysql_error()是否返回非空字符串,mysql_errno()是否返回非0值,或mysql_field_count()是否返回0,可以检查是否出现了错误。
如果未返回行,将返回空的结果集。(空结果集设置不同于作为返回值的空指针)。*/
printf( "查询未返回结果集\n");
printf( "错误编号:%d\n", mysql_errno(&mysql));
printf( "错误信息:%s\n", mysql_error(&mysql));
printf( "行数:%d\n", mysql_field_count(&mysql));
}
else
{
printf( "结果集的行数:%d\n", mysql_num_rows(res));
MYSQL_ROW mr;
MYSQL_FIELD *mf = mysql_fetch_fields(res);
while((mr = mysql_fetch_row(res)) != NULL)
{
unsigned long *lengths;
lengths = mysql_fetch_lengths(res);
for(unsigned int i = 0; i < mysql_num_fields(res); i++)
{
printf( "%s:%s ", mf[i].name, mr[i]?mr[i]: "NULL");
}
printf( "\n");
}
}
mysql_free_result(res);
}
else
{
int i = mysql_errno(&mysql);
printf( "发生错误:%s\n", mysql_error(&mysql));
}
mysql_close(&mysql);
return 0;
}