Доработать CRecordset
От: dmitry_npi Россия  
Дата: 04.06.07 17:20
Оценка:
Добрый день!
Стал осваивать класс CODBCRecordset от Степана Чеканова, модифицированный также Sasa Kajic. Подскажите, почему при попытке прочитать поле image происходит Exception "Data truncated"? Ведь должна выделяться память по GlobalAlloc. Объем поля небольшой — пара мегабайт.
И еще вопросик — класс хороший, только вот не хватает в нём способности перекачивать blob-поля через буфер, порциями. Не подскажете, как это реализовать?
Атмосферная музыка — www.aventuel.net
Re: Доработать CRecordset
От: bpv2002  
Дата: 05.06.07 13:50
Оценка: -1
Здравствуйте, dmitry_npi, Вы писали:

_>Добрый день!

_>Стал осваивать класс CODBCRecordset от Степана Чеканова, модифицированный также Sasa Kajic. Подскажите, почему при попытке прочитать поле image происходит Exception "Data truncated"? Ведь должна выделяться память по GlobalAlloc. Объем поля небольшой — пара мегабайт.
_>И еще вопросик — класс хороший, только вот не хватает в нём способности перекачивать blob-поля через буфер, порциями. Не подскажете, как это реализовать?

здесь
Re[2]: Доработать CRecordset
От: dmitry_npi Россия  
Дата: 07.06.07 15:33
Оценка:
B>здесь

Ничего умнее придумать не могли вы? И не лень же было сообщение создать! Если нечего сказать по существу, зачем отвечать?

(да простит меня модератор)
Атмосферная музыка — www.aventuel.net
Re[3]: Доработать CRecordset
От: febus Германия  
Дата: 07.06.07 16:31
Оценка:
Здравствуйте, dmitry_npi, Вы писали:

_>Ничего умнее придумать не могли вы? И не лень же было сообщение создать! Если нечего сказать по существу, зачем отвечать?

"Холоднокровней, Маня, холоднокровней! Вы не на работе" ((С) Беня Крик, Одесские рассказы)

В конце концов, он своим сообщением поднял тему наверх, не пришлось самому писать "up". Следовало бы сказать ему за это спасибо

На такой вопрос нельзя просто дать толковый ответ. Можно лишь попытаться, и то лишь при большом желании и наличии времени.
А тут, как известно, люди все занятые, никто копаться в интернете, чтобы найти концы не станет. Один вот только я бездельник. Это минус
Но зато у меня сегодня выходной и сил хватает после тренировки лишь бить по клавишам. И это плюс .
_>Стал осваивать класс CODBCRecordset от Степана Чеканова, модифицированный также Sasa Kajic.
Ok, все конечно знают этот класс Он же не входит в библиотеку MFC, так хоть линк бы кинул на codeproject, что-ли для приличия(здесь)
База данных какая? Это все очень важно, правильно заданный вопрос — это 50% ответа.
Ну а про тестовый пример — это я вообще размечтался.

Куда картинку то читаем? В CLongBinary надеюсь?
Исключение кидается, кто кидает, когда? Тогда может станет понятнее почему...
Вариантов масса. Например:
здесь

здесь
Re[4]: Доработать CRecordset
От: dmitry_npi Россия  
Дата: 07.06.07 17:03
Оценка:
Здравствуйте, febus

Вот вам спасибо, чесслово.
Хотя Пример1 "APPLIES TO Microsoft Foundation Class Library 4.2, when used with Microsoft Visual C++ 4.0 Standard Edition"
Да и Пример2 тоже не в тему. Я ж перерыл MSDN-то...

Да, оригинальный CODBCRecordset использует CLongBinary, так как это поле есть в структуре CDBVariant. Вот при чтении в него и происходит исключение. Заменил тогда на чтение в CByteArray (что рекомендовано Microsoft). Оно работает, но есть два НО:
1) Приходится указывать максимальный размер поля — это лишний расход памяти. Хотя MFC после выделения памяти сразу же читает в поле и тут же освобождает лишнюю память. Но все равно как-то.... А если размер поля больше ОЗУ?
2) Хотелось бы читать поле кусочками. Но не могу заставить работать SQLGetData совместно с MFC.

Я попытался как-то узнать размер поля перед первым вызовом RFX_Binary, но мне это не удалось, к сожалению. Вот если бы мне удалось найти ответы на эти вопросы....
Я давно ищу хорошую обёртку над ODBC, но ни OTL, ни другие простые обёртки не дают хорошего контроля над blob-полями. Да, база на MS SQL2000.
Атмосферная музыка — www.aventuel.net
Re[5]: Доработать CRecordset
От: febus Германия  
Дата: 07.06.07 18:12
Оценка:
Здравствуйте, dmitry_npi, Вы писали:
_>Да и Пример2 тоже не в тему. Я ж перерыл MSDN-то...
Весь MSDN? Я перед вами преклоняюсь!
_>Я давно ищу хорошую обёртку над ODBC, но ни OTL, ни другие простые обёртки не дают хорошего контроля над blob-полями. Да, база на MS SQL2000.
Да видел я про примеры и про то, что они скорее всего не в тему. Просто каков вопрос, таков и ответ...
Теперь вопрос поставлен совсем иначе и отношение соответственно тоже совсем другое.

Chapter 11 — Using BLOBs
И в особенности раздел ODBC: Handling BLOBs in a Database
Это ответ на ваш вопрос?
Re[5]: Доработать CRecordset
От: febus Германия  
Дата: 07.06.07 18:45
Оценка:
Здравствуйте, dmitry_npi,
в догонку, вот еще:
Getting Long Data
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.