WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Рисунок + ActiveX + BLOB

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Рисунок + ActiveX + BLOB
alex2808 опубликован 05-01-2002 17:37 MSK   Click Here to See the Profile for alex2808   Click Here to Email alex2808  
Привет...
Друзья, не видел ли кто компонента, который позволял бы считать рисунок и запихнуть его в BLOB базы данных (Oracle, SQL Server) и считывать его оттуда.
Может кто-то это делал на VC++ без компонента, или с помощью стандартных, поделитесь технологией, если не жалко.
Или ссылочку киньте... :))
lamo опубликован 05-01-2002 22:27 MSK     Click Here to See the Profile for lamo  Click Here to Email lamo     
а собсно в чем траблы то ?
читаеш файло и пихаеш ево в ЛОБ.
клиент ессно должен понимать что это не хрен
собачий а лоб ... и работать с этим.


зы.
по поводу мсскл - это дело непредсказуемо.
тут лучше с бубном около серва побегать.

alex2808 опубликован 06-01-2002 00:10 MSK     Click Here to See the Profile for alex2808  Click Here to Email alex2808     
А поподробнее бы.?!
Рисунок то я без проблем в Kodak Image запихиваю... А вот оттуда бы его выдрать да в CBitmap преобразовать... Потом бы я его с помощью OLE DB в BLOB бы запихнул.
Может кто-то знает как его с помощью ADO туда запихнуть. И вообще всю цепочку бы отследить от контрола какого нибудь до BLOB-а. На сайте Мелких все перерыл, ни одного примера не нашел. Может кто-то в ИНЕТе чо-то подобное видал. Был бы очень признателен за помощь.
lamo опубликован 06-01-2002 00:33 MSK     Click Here to See the Profile for lamo  Click Here to Email lamo     
в вин нету доступа ремоутного.
только к унихам.
поэтому в пнд как до работы доберусь - запощщу
примеры с оледб.
но уверен, что разницы нет. сейчас вот смотрю
в перловые и жавские сырцы.
там у клиента ракла сносит крышак
когда с лоб работает, потому что он не знает
что это за лоб.
нужно в общем сначала прочитать это поле,
а потом уже биндить значение для апдейта, инсерта
там или еще чего.

в пнд скину пример под вин.

lamo опубликован 07-01-2002 13:04 MSK     Click Here to See the Profile for lamo  Click Here to Email lamo     
админство части где есть лобы у меня через
веб как оказалось.
все остальные платежи и т.д. через апликейшн,
и то на билдере.
ткнулся в хелп - и там все есть. даже с примерами.
лежит хелп тут
\oracle\ora81\Mshelp
т.е. там его два.
а вот кусок оттуда что тебе нужен.

#include <oracl.h>
#include <iostream.h>
#include <fstream.h>

// Example for OBlob::Write

int main()
{
//Initialize oo4o, connect, execute sql
OStartup();
ODatabase odb("ExampleDB", "scott", "tiger");
ODynaset odyn(odb, "SELECT * FROM PART");
if (!odyn.IsOpen())
{
cout <<"Connect Error: "<<odb.GetErrorText()<<endl;
cout <<"SQL Error: "<<odyn.GetErrorText()<<endl;
return 1;
}

//prior to modifying a LOB for the first time,
//we must first insert an Empty LOB and then commit
OValue val;
val.SetEmpty();
odyn.AddNewRecord();
oresult ores = odyn.SetFieldValue((const char *)"PART_IMAGE", val);
ores = odyn.Update();
OBlob oblob;
odyn.StartEdit();
odyn.GetFieldValue("PART_IMAGE", &oblob);
unsigned char *buffer = 0;
try
{
// calculate an optimum buffersize of approximately 32k bytes
unsigned long optchunk = oblob.GetOptimumChunkSize();
unsigned int bufsize = ((int)(32768/optchunk)) *optchunk;
buffer = (unsigned char *)malloc(bufsize);
//open file and get file size
fstream fs;
fs.open("C:\\Oracle\\Ora81\\Oo4o\\Cpp\\Workbook\\Lob\\partimage.dat", ios::in);
fs.setmode(filebuf::binary);
fs.seekg(0, ios::end);
unsigned long filesize = fs.tellg();
fs.seekg(0, ios::beg);

unsigned long totalwritten = 0;
unsigned long amtread = 0;
int piecetype = OLOB_FIRST_PIECE;

//By taking advantage of streaming we get the best performance
//and we don't need to allocate a huge buffer.
if (filesize <= bufsize)
piecetype = OLOB_ONE_PIECE;
else
oblob.EnableStreaming(filesize);
while(totalwritten != filesize)
{
fs.read(buffer, bufsize);
amtread = fs.gcount();
oblob.Write(buffer, amtread, piecetype);
totalwritten = totalwritten + amtread;

if ((filesize - totalwritten)<=bufsize)
piecetype = OLOB_LAST_PIECE;
else
piecetype = OLOB_NEXT_PIECE;
}

oblob.DisableStreaming();
ores = odyn.Update();
fs.close();
}
catch(OException E)
{
cout<<E.GetFailedMethodName()<< " Error: "<<E.GetErrorText()<<endl;
}
if (buffer)
free(buffer);

OShutdown();
return 0;
}

про mssql ничего хорошего сказать не могу.
хочеш геморой - используй его.
в качестве примера - простейший инсерт в дб.
нужно было заинсертить около 100 тыс записей.
все было запарсено в sql файло с кучей insert
и оно собственно потом было запущено через
стандартную фичу ентерпрайза который виесте с
сервом и идет.
примерно гдето через 20-30 инсертов автоматом
генерился commit.
после кучи тестов так и не была выяснена закономерность
генерения этих коммитов.
и причем когда явно делаеш rollback
ничего не происходило.
вобщем какой он был в 6.5 версии таким он и сейчас
остался.
т.е. глючным.

alex2808 опубликован 07-01-2002 15:50 MSK     Click Here to See the Profile for alex2808  Click Here to Email alex2808     
Спасибо за подсказку... Я как раз с Ораклиной и работаю... Щас полезу поищу...
lamo опубликован 09-01-2002 19:10 MSK     Click Here to See the Profile for lamo  Click Here to Email lamo     
с раклом под соляркой ?
если да - чиркани мыл.
alex2808 опубликован 09-01-2002 23:51 MSK     Click Here to See the Profile for alex2808  Click Here to Email alex2808     
Да нет, под NT. Под UNIX - не тянем. Я на фирме и программист, и админ БД и сисадмин в одном лице. А все знать - времени не хватает. NT админить легче. Вот и работаем с ней.
lamo опубликован 09-01-2002 23:59 MSK     Click Here to See the Profile for lamo  Click Here to Email lamo     
легче ?
странно.
попробовал мс поадминить - ужас.
ни логов нормальных, глюки вылазиют неизвесно откуда.
и главное - не найти откуда лезут-то.

помоему полюбому проще админить *них системы.

зы.
ну ясно.
просто чтото меня переглючило тут при
конфиге.
ничего вразумительного на форуме у оракла
никто не ответил.

alex2808 опубликован 10-01-2002 00:30 MSK     Click Here to See the Profile for alex2808  Click Here to Email alex2808     
Не знаю, самому бы тоже хотелось с MS сорваться, да так уж исторически сложилось, все с сетями NT работал, а переучиваться некогда, сейчас больше прогу гоню. Времени на другое просто не хватает. Тут еще и Ораклину надо учить. Я в банке раньше работал, все больше Informix стрил.

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.