使用VC6.0连接mysql的时候,在输出中文时,会出现乱码,可以用下面的函数解决:
mysql_set_character_set(myData,"gb2312"); //这个是用在linux 下的,
VC6.0下用这个: ret = mysql_options(conn, MYSQL_SET_CHARSET_NAME, "gb2312");//来保证你字码, 要加重记住.没这个设置写到数据mysql里就是乱码了, 汉字就是乱码
改过之后的代码如下:
#include <malloc.h>
#include <stdio.h>
#include <winsock.h>
#include "mysql.h"
#pragma comment( lib, "libmysql.lib")
void main()
{
char SqlText[256] = "";
unsigned char buf[6];
MYSQL mysql;
MYSQL_RES *res = NULL;
MYSQL_FIELD * fd = NULL;
MYSQL_ROW row;
int i = 0;
mysql_init( &mysql );
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gb2312");
if ( !mysql_real_connect( &mysql, "localhost", "root",
"1111", "spider", 3306, NULL, 0) )
{
puts("数据库连接失败");
mysql_close( &mysql );
return FALSE;
}
else
{
puts("数据库连接成功");
/* sprintf( SqlText, "insert into animals(name, kg) values ('chicken',6), ('dog', 4)");
//insert失败
if ( mysql_query( (MYSQL *)&mysql, SqlText ) )
{
puts("Can't insert data to table");
printf("%s\n", mysql_error(&mysql));
mysql_close( &mysql );
return FALSE;
}
*/
sprintf( SqlText, "select * from category");
//进行数据检索
if ( !mysql_query( (MYSQL *)&mysql, SqlText ))
{
res = mysql_store_result( &mysql );
i = (int)mysql_num_rows( res );
printf("Query: %s\n%d records found:\n", SqlText, i );
//输出各字段名
for ( i=0; fd = mysql_fetch_field(res); i++ )
{
printf("%-6s\t", fd->name );
}
puts("");
//依次读取各条记录
while ( row = mysql_fetch_row(res) )
{
printf( "%-6s\t%-6s\t%-6s\n",row[0],row[1],row[2] );
}
mysql_free_result( res );
}
else
{
mysql_close( &mysql );
return FALSE;
}
}
mysql_close(&mysql);
return TRUE;
}