每次查询前先执行"set character_set_results=gb2312"
解决方案 »
- 为什么mysql登录必须用127.0.0.1
- 关于sql insert语句报错问题 跪求大虾指导!!!
- 简单的SQL语句,急!
- mysql 6.0 官方网站上怎么找不到呢?哪位能提供连接?
- 看句sql,count以后加条件
- 删除数据库里table.I_ndex值最小的100条数据?这样的sql语句怎样写???
- 关于论坛的数据库设计
- --------如何用EMS MySQL Manager标实一个字段为外键(外码)???---------在线
- mysql 线程池的处理
- 关于ER图的两个问题
- 有谁用slony做过postgresql的双机热备?
- 用jsp写入mysql数据库时中文变成???????????????
/////////////////////////////////////////
//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数据库中就发现“中文”变成了??,郁闷那
在最简单的情况下,可以将 CString 对象转换成 LPCTSTR。LPCTSTR 类型转换运算符从 CString 对象返回指向只读的 C 样式空终止字符串的指针。
由 LPCTSTR 返回的指针指入由 CString 使用的数据区域。如果 CString 离开了这个范围并且被自动删除,或其他原因更改了 CString 的内容,那么 LPCTSTR 指针将不再有效。请将该指针指向的字符串视为临时的。
我觉得有没有可能是转换类型得时候有问题.如果直接用CSTRING类型而不用转换成LPCTSTR类型呢?
我试了一下,是不行的db.ExecuteSQL 默认接受的参数就是LPCTSTR类型的,他还会自动将CString 转换为LPCTSTR类型的
似乎不是这个问题