为什么我自己创建的Access数据库数据是AscII码的,Microsoft Access创建的就是Unicode码的?内有具体说明

lmopq 2003-09-29 02:12:05
如题,我是用ADOX创建数据库文件的,创建表及其他操作用ADO。
在我创建的数据库文件中最直接的感受就是存入的字符串不是宽字符形式的。
表现在当进行字符串排序时,英文字母排序正常,汉字出错。把所创建的表考入Microsoft Access创建的文件中,排序正常。用Microsoft Access创建的文件代替自己创建的,程序运用中排序正常。

那位遇到过这种问题,请教一下有什么解决方法?(我需要由自己的程序生成数据库文件的)

以下是我程序相关的主要部分

其中数据库文件由ADOX创建:
ADOX::_CatalogPtr pCatalog = NULL;
CString createDB;
createDB=CString(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=")) +
strFilePath) ;
try{
//Create object instances:
pCatalog.CreateInstance(__uuidof (ADOX::Catalog));
//Create Database
pCatalog->Create((LPCTSTR)createDB);
pCatalog.Release();

}
catch(_com_error e){}

库中的表由ADO创建:
ADODB::_ConnectionPtr m_pConnection;

CString createTable1;
createTable1.Format("CREATE TABLE 个人信息 (\
姓名 VARCHAR(20) NOT NULL,\ //以姓名排序
ID SMALLINT NOT NULL,\
备注 TEXT NULL,\
修改日期 VARCHAR(60) NOT NULL)");

try{
m_hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(m_hr)) {
m_pConnection->Mode=ADODB::adModeShareDenyWrite;
m_pConnection->Open((_bstr_t)createDB,"","",ADODB::adModeUnknown);///连接数据库
m_pConnection->Execute((_bstr_t)createTable1,&RecordsAffected,ADODB::adCmdText);
}
}
catch(_com_error e){}
...全文
70 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lmopq 2003-10-09
  • 打赏
  • 举报
回复
等了好久,还是没人知道怎么回事吗?
icr_mio 2003-09-30
  • 打赏
  • 举报
回复
不太清楚了。是不是创建的时候可以指定什么参数之类的?
或者,你可以准备好一个空Access库,每次新建库的时候,就拷贝一份。
lmopq 2003-09-29
  • 打赏
  • 举报
回复
主要是用
addItem.Format("INSERT INTO 个人信息(ID,姓名,备注,修改日期) VALUES (%ld,\"%s\",\"%s\",\"%s\")",……);
m_pConnection->Execute((_bstr_t)addItem,&RecordsAffected,ADODB::adCmdText);

也用到过m_pRecordset->PutCollect("姓名",vName);

用这些如果是往Microsoft Access创建的文件里存的话,汉字排序是没问题的。
icr_mio 2003-09-29
  • 打赏
  • 举报
回复
你是怎么往里存字符串的?

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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