고수님들 부탁합니다.
제가 DB검색을 하려고 하는데요, Access DB(*.mdb)에 있는 테이블에
값을 조회하려고 해요
DB에는 두 개의 값이 있습니다.
"ラスト·プレゼン"
"반가워요"
일본어가 한개 있죠.
SELECT * FROM MyTbl where MyTest like '%%반가%%'
쿼리를 날리면 "메모리가 부족합니다" 메시지가 뜨는데
일본어가 없으면 쿼리는 잘 됩니다.
해결 방법이 없을까요?
고수님들 부탁합니다.
-------------------------- 소스
--------------------------------
#pragma warning(disable : 4146)
#import "C:\Program Files\Common Files\System\ADO\msado15.dll"
rename_namespace("ADOCust") rename("EOF","EndOfFile")
#pragma warning(default : 4146)
using namespace ADOCust;
#import <cdosys.dll> no_namespace
#import "C:\PROGRAM FILES\COMMON FILES\System\ado\MSJRO.DLL"
no_namespace
void CAccessDBTestDlg::OnButton2()
{
// TODO: Add your control notification handler code here
_ConnectionPtr m_pConn = NULL;
_RecordsetPtr pTmpRecordSet = NULL;
CString strConnect;
strConnect.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=%s;",
"test.mdb");
_bstr_t strCon(strConnect);
m_pConn.CreateInstance(__uuidof(Connection));
try
{
m_pConn->Open(strCon,
_T(""),
_T(""),
adOpenUnspecified);
CString strQuery;
strQuery.Format("SELECT * FROM MyTbl where MyTest like
'%%반가%%'");
pTmpRecordSet.CreateInstance(__uuidof(Recordset));
pTmpRecordSet->Open(_variant_t(strQuery),
_variant_t((IUnknown*)m_pConn,true),
adOpenKeyset, adLockReadOnly, adCmdText);
while ( !pTmpRecordSet->EndOfFile )
{
_variant_t vrTemp
=pTmpRecordSet->Fields->Item["MyTest"]->Value;
if ( pTmpRecordSet->EndOfFile )
{
break;
}
pTmpRecordSet->MoveNext();
}
pTmpRecordSet->Close();
m_pConn->Close();
}
catch (_com_error &e)
{
MessageBox(e.Description());
}
}
|