mysql 插入汉字问题

在命令行中插入汉字没有问题,而在调用Mysql_query时如果插入的是汉字则Mysql返回错误。


这显然是字符集设置问题 。可以通过设置GB2312 来解决。mysql_set_character_set(mysql,"gb2312"); 

下面是具体的实例代码。




/在vc下操作MYSQL中文数据的参考程序


#include <windows.h>

#include <iostream>

#include <mysql.h>

#include <stdio.h>

#include <string.h>

using namespace std;



int connDB();

int create_table();

int insert_table();

int select_table();

int disconnDB();



MYSQL *mysql;

MYSQL_RES *res;

MYSQL_FIELD * fd;

MYSQL_ROW row;

char szSqlText[500]="";



int i;



int main()

{



connDB();

// create_table();

insert_table();

select_table();

disconnDB();

return 0;

}





///子函数

int connDB()//连接数据库

{

char *host = "localhost";

char *user = "root";

char *pass = "123";

char *db = "jj";

mysql = mysql_init((MYSQL*) 0);

mysql_real_connect( mysql, host, user, pass, db, 0, NULL, 0 ) ;

mysql_set_character_set(mysql,"gb2312");

cout<<"conn OK!"<<endl;

return 0;

}



int disconnDB()//关闭数据库

{

mysql_close( mysql ) ;

cout<<"disconn OK!"<<endl;

return 0 ;

}



int create_table()

{

mysql_set_character_set(mysql,"gb2312");

sprintf(szSqlText, //构造SQL语句

"create table mytable"

//新建一张表

"(s0 varchar(100), s1 char(6), "

"s2 varchar(4), s3 varchar(6), s4 int)");

mysql_query( mysql, szSqlText);

cout<<"create OK!"<<endl;

return 0;

}



int insert_table()

{

string s1="insert into mytable values(\'";

//向表中插入数据

string s2="2000-3-10 21:01:30";

//注意时间的格式

string ss="\',\'";

string s3="Test";

string s4="可进口的";

string s5="可124";

string s6="\',";

sprintf(s6,"%d",2500);

string s;

s=s1+s2+ss+s3+ss+s4+ss+;

mysql_set_character_set(mysql,"gb2312");

sprintf(szSqlText,"s%",s);

if(!mysql_query( mysql, szSqlText))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值