powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Хранение файлов в Blob полях
3 сообщений из 3, страница 1 из 1
Хранение файлов в Blob полях
    #34895860
YuriyT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я понимаю говорить у нас все любят. Кто нибудь из профессионалов может посоветовать что нужно почитать и где? Для того, что бы понять как конкретно создается BLOB поля. Как загружать файлы пользователю. Как программно загружать файлы любых форматов в базу. Как их извлекать пользователю или программно? Любые примеры Builder, Delphi & Visual Studio не важно. Что вы все время о надежности разговариваете. Посоветуйте с чего начать?
Пожалуйста не реагируйте по принципу а как, а что - чо тупой и так далее. Знания у человека приобретаются при общении!!! Все когда то начинали с нуля. У меня много архивов с текстовыми файлами пояснениями что в архиве. Уже их столько, что проводник тормозит. Хотелось перейти от храненя ссылок на файлы к полному хранению файлов в базе.
...
Рейтинг: 0 / 0
Хранение файлов в Blob полях
    #34896191
Serik Akhmetov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю, вам нужно сначала определиться точно, что вы хотите получить, и что вы будете использовать. Читать нужно документацию по выбранным продуктам. Слишком общий вопрос.
Также стоит воспользоваться поиском.

Пример для Firebird/C++Builder/IBPP

создать таблицу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE ES_SCHEME (
    SCHEME_ID  PK /* PK = INTEGER NOT NULL */,
    NAME       NAME32 NOT NULL /* NAME32 = VARCHAR(32) */,
    WIDTH      "INT" DEFAULT  1024  NOT NULL /* "INT" = INTEGER */,
    HEIGHT     "INT" DEFAULT  768  NOT NULL /* "INT" = INTEGER */,
    PICTURE    PIC /* PIC = BLOB SUB_TYPE 0 SEGMENT SIZE 4096 */,
    NOTE       NOTE64 /* NOTE64 = VARCHAR(64) */,
    DATE_BEG   DATETIME DEFAULT '1996-01-01 00:00:01' NOT NULL /* DATETIME = TIMESTAMP */,
    DATE_END   DATETIME DEFAULT '2077-12-31 23:59:59.999' NOT NULL /* DATETIME = TIMESTAMP */,
    SID        F_KEY /* F_KEY = INTEGER */
);

записать BLOB
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
int TDataLayer::ESSchemeUPicture(int scheme_id, AnsiString path_picture)
{
  int ret= 0 , s, fsize; char buf;
  string sql;
  IBPP::Blob b;
  ifstream fin;

  sql = "execute procedure ES_SCHEME_U_PICTURE (?,?)";

  fin.open(path_picture.c_str(), ios::binary);
  if (fin.fail()) { return (- 3 ); }

  try
  {
   tr = IBPP::TransactionFactory(db, IBPP::amWrite, IBPP::ilReadCommitted, IBPP::lrNoWait);  // Start transaction for write
   tr->Start();
   b  = IBPP::BlobFactory(db, tr);
   b->Create();

   while(!fin.eof())
   {
    fin.read(&buf,  1 );
    if (fin.good())
      {b->Write(&buf,  1 ); ret++;}
    else
      break;
   }
   b->Close();

   st = IBPP::StatementFactory(db, tr);
   st->Prepare(sql);

   st->Set( 1 , scheme_id);
   st->Set( 2 , b);

   st->Execute();
   tr->Commit();
  }
  catch (IBPP::Exception& e)
  {
   errorstr = e.what();
   ret = - 1 ;
  }
  fin.close();

  return (ret);
}

Прочитать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
bool TDataLayer::ESSchemeSImg(TMemoryStream * s, int scheme_id)
{
 bool ret = true;
 string sql;
 IBPP::Blob b; char * buf; int size, largest, segments;

 sql = "select picture ";
 sql +="from es_scheme_s(?, NULL, NULL)";

 try
 {
  tr = IBPP::TransactionFactory(db,IBPP::amRead,IBPP::ilReadCommitted,IBPP::lrNoWait);  // Start transaction for read
  tr->Start();
  st = IBPP::StatementFactory(db, tr);
  st->Prepare(sql);

  st->Set( 1 , scheme_id);

  st->Execute();
  b = IBPP::BlobFactory(db, tr);
  while(st->Fetch())
  {
   st->Get( 1 , b);
   b->Open();
   b->Info(&size, &largest, &segments);
   buf = new char [size];

   int offset =  0 ;
   for (int s= 1 ; s<=segments; s++)
   {
     int r;
     r = b-> Read(&buf[offset], largest);
     offset += r;
   }
   b->Close();

   s->SetSize(size);
   s->Position =  0 ;
   s->Write(&buf[ 0 ], size);
   delete [] buf;
  }

  tr->Commit();
 }
 catch (IBPP::Exception& e)
 {
  errorstr = e.what();
  ret = false;
 }

 return (ret);
}
...
Рейтинг: 0 / 0
Хранение файлов в Blob полях
    #35073181
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuriyTЯ понимаю говорить у нас все любят. Кто нибудь из профессионалов может посоветовать что нужно почитать и где? Для того, что бы понять как конкретно создается BLOB поля. Как загружать файлы пользователю. Как программно загружать файлы любых форматов в базу. Как их извлекать пользователю или программно? Любые примеры Builder, Delphi & Visual Studio не важно. Что вы все время о надежности разговариваете. Посоветуйте с чего начать?
Пожалуйста не реагируйте по принципу а как, а что - чо тупой и так далее. Знания у человека приобретаются при общении!!! Все когда то начинали с нуля. У меня много архивов с текстовыми файлами пояснениями что в архиве. Уже их столько, что проводник тормозит. Хотелось перейти от храненя ссылок на файлы к полному хранению файлов в базе.

http://www.sql.ru/faq/faq_topic.aspx?fid=334
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Хранение файлов в Blob полях
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]