使用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;
}