mfc通过odbc连接mysql数据库如何读出mysql数据库中的中文?

quailzhang 2005-06-15 07:50:25
mysql编码为gb2312
odbc驱动为MyODBC-3.51.11,
可就是不能从数据库中读出中文
哪位大虾知道?谢谢!
...全文
198 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
walkany 2005-06-22
  • 打赏
  • 举报
回复
用一个叫做escap(函数名记不住)什么的函数处理每个要放入到表里的数据,这是必须要做的,你没有这样做当然不可以了。
quailzhang 2005-06-20
  • 打赏
  • 举报
回复
唉,看来是没人能解决了,明天再不解决就结贴吧,这分。。所有回帖的人都平分吧,呵呵
tmdbcd0630 2005-06-19
  • 打赏
  • 举报
回复
汗......我估计可能是汉字是1个字是2个字节,而楼主插入得数据可能是每次只写一个字节?有这种可能吗?我只有帮楼主再顶了.
walkany 2005-06-17
  • 打赏
  • 举报
回复
应该没有问题的,我用过的,不用作任何设置的。
quailzhang 2005-06-17
  • 打赏
  • 举报
回复

我试了一下,是不行的

db.ExecuteSQL 默认接受的参数就是LPCTSTR类型的,他还会自动将CString 转换为LPCTSTR类型的
似乎不是这个问题
tmdbcd0630 2005-06-17
  • 打赏
  • 举报
回复
LPCTSTR( sql )
在最简单的情况下,可以将 CString 对象转换成 LPCTSTR。LPCTSTR 类型转换运算符从 CString 对象返回指向只读的 C 样式空终止字符串的指针。
由 LPCTSTR 返回的指针指入由 CString 使用的数据区域。如果 CString 离开了这个范围并且被自动删除,或其他原因更改了 CString 的内容,那么 LPCTSTR 指针将不再有效。请将该指针指向的字符串视为临时的。
我觉得有没有可能是转换类型得时候有问题.如果直接用CSTRING类型而不用转换成LPCTSTR类型呢?

quailzhang 2005-06-17
  • 打赏
  • 举报
回复
大家看看我的程序:
/////////////////////////////////////////
//Head.h
#ifndef MYDB
#define MYDB
extern CDatabase db;
extern bool openDB( void );
#endif

//////////////////////////////////////////
Head.cpp
#include "StdAfx.h"
#include "Head.h"

CDatabase db;
bool openDB()
{

if ( db.IsOpen() )
{
return true;
}
else
{
db.Open( "test", false, false,_T("ODBC;DSN=test;PWD=abcd;PWD=1234"), false );
}
return true;
}

/////////////////////////////////////////////////////////
然后在函数中这样使用:
openDB();
sql="insert into table1(name) values('中文')";
try
{
db.ExecuteSQL( LPCTSTR( sql ) );
}
catch ( CDBException e )
{
MessageBox("wrong!");
}

就这样,然后在mysql数据库中就发现“中文”变成了??,郁闷那
quailzhang 2005-06-16
  • 打赏
  • 举报
回复
哪位知道啊?100分啊!!!!
mathematician 2005-06-16
  • 打赏
  • 举报
回复
每次查询前先执行"set character_set_results=gb2312"
quailzhang 2005-06-16
  • 打赏
  • 举报
回复
试了一下,不行,是不是myodbc不支持中文?

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧