为什么我自己创建的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){}