Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение данных типа varchar из базы mysql, с помощью CRecordset::GetFieldValue 
:(
    Опции темы
Dranko
Дата 31.7.2008, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 1.7.2008

Репутация: нет
Всего: нет



Взял из мсдна пример, который с помощью CRecordset::GetFieldValue читает поля из базы. Могу прочитать все колонки, кроме колонок имеющих тип VARCHAR или TEXT.

Код

#include "stdafx.h"
#include "afxdb.h"

void main(int argc, _TCHAR* argv[])
{
    CDatabase db;
    db.OpenEx(NULL);
    CRecordset rs( &db );
    rs.Open( CRecordset::forwardOnly, _T( "SELECT * FROM articles" ) );
    CDBVariant varValue;
    CString str1;
    CODBCFieldInfo fieldinfo;
    while( !rs.IsEOF( ) )
    {
       rs.GetFieldValue("title", varValue, -9); //  rs.GetFieldValue((short)0, str1) - Тоже не катит
       rs.MoveNext( );
    }
    rs.Close( );
    db.Close( );
}

-9 узнал с помощью функции фьелдинфо, но тем не менее перепробовал кучу значений, ничего не подходит.
Подскажите, может кто сталкивался?
PM MAIL   Вверх
Dranko
Дата 1.8.2008, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 1.7.2008

Репутация: нет
Всего: нет



Что никто текстовые данные через ОДБЦ не принимал из базы?
PM MAIL   Вверх
UKAKA
Дата 29.11.2008, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 21.4.2008

Репутация: нет
Всего: нет



вот рабочий пример

Код

void CExpDlg::OnOpen() 

    CDatabase cdbMyDB;CRecordset cr(NULL);
    cdbMyDB.Open( _T( "XE" ), FALSE,FALSE, _T( "ODBC;UID=system;PWD=123" ));
    cr.m_pDatabase=&cdbMyDB;
try
{
//    cr.Open(1,CString("DSN=XE;UID=system;PWD=4060225;DBQ=XE ;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;BTD=F;BAM=IfAllSuccessful;NUM=NLS;DPM=F;MTS=T;MDI=F;CSR=F;FWC=F;FBS=64000;TLO=O;"),CRecordset::readOnly);
cr.Open(CRecordset::snapshot, CString("SELECT * FROM SomeTable"),
CRecordset::readOnly ); 
CDBVariant *var;
var = new CDBVariant;
CString buf;
//buf = new CString;
short index=2;
cr.Move(0);
while (!cr.IsEOF())
{
cr.GetFieldValue(index,buf);
AfxMessageBox(buf);
cr.MoveNext();
}
cr.Close(); 
}
catch(CDBException cdb)
{
AfxMessageBox(cdb.m_strStateNativeOrigin);
}
}


Добавлено через 10 минут и 10 секунд
а если проблема была с русификацией, то там косяк с кодировкой..
строки нужно добавлять к примеру через скрипт

к примеру
@G:/w.sql

где G:/w.sql
insert into sometable values (10,10,'Привет');
insert into sometable values (10,10,'privet');

в mfc читаться будет нормально.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.0560 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.