#1 07.06.07 16:30
Работа с ODBC в MSVS (С++)
Делаю
Код: С++:
CDatabase m_db1;
CRecordset m_rs1;
m_db1.OpenEx( _T( "DSN=BSS_TEST;UID=dba" ), CDatabase::openReadOnly | CDatabase::noOdbcDialog );
m_rs1.m_pDatabase = & m_db1;
m_rs1.Open( CRecordset::dynaset, _T("SELECT AUTOKEY FROM ACCOUNTS;") );И ничего не получаю. Падает в ошибке
Ungandled exception at 0x..... in ....exe
Microsoft C++ exception: CDBException at memory location 0x....
предлагает Break или Continue. На Continue вываливается в
Debug Assertion Failed
и ссылается на файл (которого, разумеется, не существует, как и диска f: в целом) f:\rtm\vctools\vc7libs\ship\atlmfc\include\afxdb.inl Line 70
У кого есть пример работы с этим чудом? Из инета пробовал - то же самое. Ощущение, будто какой-то шаг пропускаю....
Offline
#3 07.06.07 20:32
Re: Работа с ODBC в MSVS (С++)
utug, где по этому поводу можно порыть? Насколько он мне дал зарыться в него, он пытается поменять поля местами (так и не понял, для чего), в том числе, если вместо запроса NULL. В тех "краях" и валится... Явно не дает посмотреть по причине недостаточности данных (что-то типа "нет срр файла). Уж не ODBC ли "валится"? :((
Offline
#6 13.06.07 14:10
Re: Работа с ODBC в MSVS (С++)
_|ex, да, слышал про такое. Пробовал, эффект нулевой.
Мерзкий, коннект открывается валится на p_rs1->Open:
Код: С++:
CDatabase * p_db1 = new CDatabase;
try
{
ASSERT(p_db1);
p_db1->OpenEx( _T( "DSN=BSS_TEST" ), 0 );
if (p_db1->IsOpen())
{
CRecordset * p_rs1 = new CRecordset(p_db1);
ASSERT(p_rs1);
p_rs1->m_nFields = 5;
p_rs1->Open(CRecordset::snapshot, _T("SELECT * FROM ACCOUNTS"), CRecordset::none);
if (p_rs1->IsOpen())
{
CString strOut;
while (!p_rs1->IsEOF())
{
p_rs1->GetFieldValue(2,strOut);
p_rs1->MoveNext();
}
}
}
}
catch (char *str)
{
int x;
}а в catch даже не пытается падать
Исправлено asp (13.06.07 14:22)
Offline

