如题,我是用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){}

解决方案 »

  1.   

    主要是用
    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创建的文件里存的话,汉字排序是没问题的。
      

  2.   

    不太清楚了。是不是创建的时候可以指定什么参数之类的?
    或者,你可以准备好一个空Access库,每次新建库的时候,就拷贝一份。