С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
gCorn
10 / 10 / 2
Регистрация: 02.08.2011
Сообщений: 28
#1

ODBC - C++

26.10.2011, 19:19. Просмотров 515. Ответов 0
Метки нет (Все метки)

Столкнулся с такой проблемой при работе с базой данных.
Вот таким образом я читаю определенную строку из базы:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CString str;
    str.Format("SELECT field2 FROM table WHERE field1 = %d;",id);
    
    CRecordset rec(db);
    CDBVariant var;
    
    rec.Open(CRecordset::forwardOnly,str,CRecordset::readOnly);
    
    if(rec.IsEOF())
    {
        return CString("Пусто");
    }
 
    rec.GetFieldValue(short(0),var);
        str=*var.m_pstring;
    rec.Close();
    return str;
Но если поле, где должна быть строка не заполнено, то программа вылетает. Пытался к строке понежнее подойти всякими IsEmpty() но все равно вылетает.

Добавлено через 4 часа 30 минут
там генерируется исключение "Access Violation" при обращении к строке. Помощь нужна срочно =\

Добавлено через 33 минуты
Может можно самому поймать это исключение и как-то обработать?
я как-то не силен в этом...

Добавлено через 1 час 7 минут
пока искал ответ сочинил две оды майкрософтам....
в классе CDBVariant есть поле m_dwType;
которое принимает некоторые значения, отталкиваясь от которого можно понять кое значение из его полей является валидным. В том числе есть значение DBVT_NULL при котором как бы ни одно значение не является валидным, однако на деле если читается пустое поле то это поле вместе со всеми принимает случайное значение зависящее от положения небесных тел или еще чего.
НО! Самое эпичное из того что я выяснил по этой теме, что вроде как когда читаешь пустое строковое поле, то m_dwType не является DBVT_STRING.
msdn дает нам простор для изучения любимых технологий ^^

P.S.: Извиняюсь за репост (я создал такую же тему в разделе Visual c++ и базы данных, называется "VC++ && MS access")
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2011, 19:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ODBC (C++):

VC+ODBC+mdb+memo+ - C++
Проблема такая. Читаю Clipperовский dbt файл в массив строк (CStringArray), имеется файл mdb с таблицей содержащей memo поле, пытаюсь...

ODBC, параметры по умолчанию - C++
Доброго утра! Хочу на ПК програмно прописывать источники ODBC. Пример абстрактного, работающего кода. Это некий копи паст - так что не...

подключение к mysql через odbc на fedora - C++
Добрый день! Пытаюсь создать подключение к БД. Настроил odbc. При вызове соединения isql -v lcab-connector. Выдает: Connected! C c++...

Как открыть конкретную таблицу через ODBC - C++
Подскажите пожалуйста, как решить проблемку. Пишу так: pDoc->m_ZastMat.Open(CRecordset::snapshot, NULL, CRecordset::none); Тогда...

Можно ли с помощью ODBC создавать файлы dBase? - C++
Подскажите с чего начать,чтобы научится создавать файлы dBase. Можно ли с помощью ODBC это сделать?

Как сделать инсталяцию ODBC так, чтобы она напрягала клиента наименьшим образом? - C++
Я использую в приложении драйвера ODBC, чтобы сохранять и читать данные в/из различных форматах (Access, DBase, Excel). При инсталяцци...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2011, 19:19
Привет! Вот еще темы с ответами:

Посоветуйте книгу по разработке OLE DB и ODBC провайдеров. - C++
Уважаемые коллеги. Не знаю в какой раздел написать. Думаю, что это ближе к C++. Посоветуйте что почитать по разработке OLE DB и...

ODBC+mySQL, Изучаю модуль ODBC - Perl
Здравствуйте. Возник следующий вопрос. Пытаюсь выполнить простой инсерт в таблицу на mySQL сервере, однако код выдает ошибки (цикл...

Microsoft OLE DB Provider for ODBC Drivers error '80040e10' [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 3. - C# ASP.NET
Hi All! имеется форма для добавления нового юзера в базу Set strConnString = Server.CreateObject('ADODB.Connection') ...

Microsoft OLE DB Provider for ODBC Drivers error '8007000e' [Microsoft][ODBC Microsoft Access Driver] Cannot open any more tables. - C# ASP.NET
Microsoft OLE DB Provider for ODBC Drivers error '8007000e' Cannot open any more tables. a_func.inc, line 813 Кода этой ошибки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.