Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.70/27: Рейтинг темы: голосов - 27, средняя оценка - 4.70
2 / 2 / 1
Регистрация: 08.01.2011
Сообщений: 47

Вставка картинки в базу SQL запросом

08.10.2012, 21:19. Показов 5376. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток!
Не получается вставить картинку в БД Paradox7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Bd->Query1->Close();         
Bd->Query1->SQL->Clear();   
Bd->Query1->SQL->Add("Insert into rec (Name_rec, Tip,  Image, Spos) \
                        Values(:Name_rec, :Tip, :Image, :Spos)");
 
Bd->Query1->Params->Items[0]->AsString=Add->EName->Text;
                                                   //EName это это простой эдит
Bd->Query1->Params->Items[1]->AsString=Add->ComboBoxKuh->Text;
                                                   //простой кобобокс   
Bd->Query1->Params->Items[2]->AsString=Add->ComboBoxNac->Text;
                                                  
Bd->Query1->Params->Items[3]->AsBlob=AddImage->Picture;
                                                          //AddImage Компонент Image
Bd->Query1->Params->Items[4]->AsString=Add->AddMemo->Text;
                                                                //AddMemo простой мемо
Bd->Query1->ExecSQL();
Это программа рецептов (для жены + курсовая).
На сайте искал, тут только для делфи есть.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.10.2012, 21:19
Ответы с готовыми решениями:

Вставка в объединённые ячейки данных запросом SQL
в объединённую ячейку запросом SQL вставляю данные. В результате снимаеться объединение и слетают форматы. Что делать? В качестве адреса...

Вставка картинки в базу MySQL
имеется база в MySQl... в ней есть столбец с форматом mediumblob . нужно две кнопки....первая это выбор файла... а вторая сохранение в...

Вставка картинки в базу в Paradox
Здравствуйте!Помогите пожалуйста. Есть похожие темы, но все не то. Существует 2 связанные таблицы: sotr.db: id, fio, data ...

40
2 / 2 / 1
Регистрация: 08.01.2011
Сообщений: 47
10.10.2012, 21:05  [ТС]
Студворк — интернет-сервис помощи студентам
Да. совершенно верно, Image.
C++
1
Bd->Query1->Params->Items[4]->AsBlob=AddImage->Picture
Я пытался вот так сделать, но выдает ошибку
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
10.10.2012, 23:51
Цитата Сообщение от VAFER Посмотреть сообщение
1 Bd->Query1->Params->Items[4]->AsBlob=AddImage->Picture
Пропиши через ParamByName
0
2 / 2 / 1
Регистрация: 08.01.2011
Сообщений: 47
11.10.2012, 00:25  [ТС]
C++
1
2
3
4
5
TMemoryStream *img = new TMemoryStream();
AddImage->Picture->Bitmap->SaveToStream(img);
img->Seek(0, 0);
Bd->Query1->Params->ParamByName("Image")->LoadFromStream(img,ftBlob);
delete img;
Все равно при просмотре белый снимок.
0
Заблокирован
11.10.2012, 00:31
Пока запросе не будет указано поле Image, вряд ли можно ждать чего-то другого. Но если я все-таки ошибаюсь (SQL теперь интуитивно понимаете, какие поля нужны для заполнения), то единственный другой вариант, что изображение, которое Вы пытаетесь сохранить - не типа BMP, а значит в MemoryStream пусто.
0
2 / 2 / 1
Регистрация: 08.01.2011
Сообщений: 47
11.10.2012, 00:33  [ТС]
Цитата Сообщение от DefineFalseTrue Посмотреть сообщение
в MemoryStream пусто.
Я тоже так предполагал. Можно это как-то проверить?
0
Заблокирован
11.10.2012, 00:40
Свойство Size у класса TMemoryStream отвечает за текущий размер. Но узнать какого типа изображение Вы загружаете в компонент TImage и того проще.
0
2 / 2 / 1
Регистрация: 08.01.2011
Сообщений: 47
11.10.2012, 00:47  [ТС]
Цитата Сообщение от DefineFalseTrue Посмотреть сообщение
единственный другой вариант, что изображение, которое Вы пытаетесь сохранить - не типа BMP, а значит в MemoryStream пусто..
Вот и пес этот.
Да при загрузке картинки в формате БМП все нормально отображается.

Тогда рождается другой вопрос как сделать так чтобы работало *.Jpeg.
Библиотеку Я подключил #include <jpeg.hpp>
0
Заблокирован
11.10.2012, 01:02
Забавно, значит у Вас в приложении все-таки поле указано.
Поскольку Picture позволяет универсально сохранять изображение в файл, но не в поток памяти (кроме буфера), то методы следующие:
1. Запоминать тип изображения при загрузке.
2. Конвектировать все изображения в BMP (через метод Assign).
3. Определять тип изображения. Здесь можно прыгать от многих моментов, но имхо самое простое проверять свойство Handle у Bitmap, Icon и Metafile, у кого не равно нулю - то и сохранять. В ином случае (если они все равны нулю), то сохранять Graphic.
0
2 / 2 / 1
Регистрация: 08.01.2011
Сообщений: 47
11.10.2012, 01:10  [ТС]
Может можно другой компонент использовать?
0
Заблокирован
11.10.2012, 01:32
Вот вам метод для решения Вашей проблемы. А то так до использования другого компилятора дойдем.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void IMG2Stream(TImage * Image, TMemoryStream * Stream)
{
    if (Image->Picture->Bitmap->Handle != NULL) Image->Picture->Bitmap->SaveToStream(Stream);
    else if (Image->Picture->Icon->Handle != NULL) Image->Picture->Icon->SaveToStream(Stream);
    else if (Image->Picture->Metafile->Handle != NULL) Image->Picture->Metafile->SaveToStream(Stream);
    else Image->Picture->Graphic->SaveToStream(Stream);
    
    Stream->Seek(0,0);
}
//--------------------------------------------------------------------------------------------------
{
    // .....
    
    TMemoryStream * MyStream = new TMemoryStream;
    IMG2Stream(AddImage,MyStream);
    Bd->Query1->Params->ParamByName("Image")->LoadFromStream(MyStream,ftBlob);
    delete MyStream;
}
//--------------------------------------------------------------------------------------------------
0
2 / 2 / 1
Регистрация: 08.01.2011
Сообщений: 47
11.10.2012, 21:43  [ТС]
Даже так.
Огромное спасибо Вам и Sasha!

Добавлено через 20 часов 8 минут
И снова Я .

Добавил новый метод как положено
щелк правой/new method...
Имя IMG2Stream, аргументы AddImage * Image, TMemoryStream * Stream
Добавить к класу TAdd
подправил код для себя
C++
1
2
3
4
5
6
7
8
9
10
11
void TAdd::IMG2Stream(AddImage * Image, TMemoryStream * Stream)
{
  if (Add->AddImage->Picture->Bitmap->Handle != NULL) \
        {Add->AddImage->Picture->Bitmap->SaveToStream(Stream);}
            else if (Add->AddImage->Picture->Icon->Handle != NULL) \
                     {Add->AddImage->Picture->Icon->SaveToStream(Stream);}
                        else if (Add->AddImage->Picture->Metafile->Handle != NULL) \
                                 {Add->AddImage->Picture->Metafile->SaveToStream(Stream);}
                                        else {Add->AddImage->Picture->Graphic->SaveToStream(Stream);}
 
Stream->Seek(0,0);
При компиляции ошибку выдает
C++
1
2
[C++ Error] Unit3.cpp(115): E2147 'Image' cannot start a parameter declaration
[C++ Error] Unit3.cpp(116): E2316 'TAdd::IMG2Stream(int *,TMemoryStream *)' is not a member of 'TAdd'
0
Заблокирован
11.10.2012, 23:10
Тип у первого аргумента AddImage? Мб TImage все-таки?
Так же файле заголовка (unitx.h) нужно прописать:
C++
1
2
3
4
5
class TFormX: public TForm
{
  public:
    void IMG2Stream(TImage * Image, TMemoryStream * Stream);
};
0
2 / 2 / 1
Регистрация: 08.01.2011
Сообщений: 47
11.10.2012, 23:20  [ТС]
Имя компонента TImage Я переименовал AddImage. Нужно прописывать в методе его имя или компонента?
В файле заголовка прописал, но нет результата).
0
Заблокирован
11.10.2012, 23:23
Если используется один и тот же компонент, то его вообще в аргументе метода прописывать не нужно:
C++
1
2
3
4
5
void TAdd::IMG2Stream(TMemoryStream * Stream)
{
  AddImage->Picture->Bitmap->Handle != NULL)
  // ....
}
А в заголовке:
C++
1
void IMG2Stream(TMemoryStream * Stream);
0
2 / 2 / 1
Регистрация: 08.01.2011
Сообщений: 47
11.10.2012, 23:27  [ТС]
C++
1
[C++ Error] Unit3.cpp(116): E2316 'TAdd::IMG2Stream(TMemoryStream *)' is not a member of 'TAdd'
Проблема не ушла.
0
Заблокирован
11.10.2012, 23:33
Внутри класса объявление под public? Можно увидеть код заголовочного файла?
0
2 / 2 / 1
Регистрация: 08.01.2011
Сообщений: 47
11.10.2012, 23:34  [ТС]
C++
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
class TAdd : public TForm
{
__published:    // IDE-managed Components
        TBitBtn *BitBtn1;
        TGroupBox *GroupBox1;
        TGroupBox *GroupBox2;
        TGroupBox *GroupBox3;
        TGroupBox *GroupBox4;
        TDBGrid *AddGrid;
        TBitBtn *BitBtn2;
        TBitBtn *BAdd;
        TGroupBox *GroupBox5;
        TEdit *EName;
        TGroupBox *GroupBox6;
        TComboBoxEx *ComboBoxKuh;
        TGroupBox *GroupBox7;
        TComboBoxEx *KbNac;
        TMemo *AddMemo;
        TApplicationEvents *ApplicationEvents1;
        TImage *AddImage;
        TOpenPictureDialog *OpenPictureDialog1;
        void __fastcall BAddClick(TObject *Sender);
        void __fastcall BitBtn2Click(TObject *Sender);
        void __fastcall BitBtn1Click(TObject *Sender);
        void __fastcall AddImageClick(TObject *Sender);
        void __fastcall FormCreate(TObject *Sender);
        void __fastcall ENameChange(TObject *Sender);
        void __fastcall AddMemoChange(TObject *Sender);
private:    // User declarations
public:     // User declarations
        __fastcall TAdd(TComponent* Owner);
        IMG2Stream(TImage * Image, TMemoryStream * Stream);
        void IMG2Stream();
};
void IMG2Stream(TMemoryStream * Stream);
0
Заблокирован
11.10.2012, 23:41
Цитата Сообщение от VAFER Посмотреть сообщение
C++
1
2
3
4
5
6
public: // User declarations
 __fastcall TAdd(TComponent* Owner);
 IMG2Stream(TImage * Image, TMemoryStream * Stream);
 void IMG2Stream();
};
void IMG2Stream(TMemoryStream * Stream);
Только IMG2Stream, только хардкор
C++
1
2
3
4
public:
  __fastcall TAdd(TComponent* Owner);
  void IMG2Stream(TMemoryStream * Stream);
};
0
2 / 2 / 1
Регистрация: 08.01.2011
Сообщений: 47
12.10.2012, 00:01  [ТС]
C++
1
2
3
4
    TMemoryStream * MyStream = new TMemoryStream;
    IMG2Stream(AddImage,MyStream); //при компиляции ссылается на это
    Bd->Query1->Params->ParamByName("Image")->LoadFromStream(MyStream,ftBlob);
    delete MyStream;
C++
1
2
3
[C++ Error] Unit3.cpp(62): E2034 Cannot convert 'TImage *' to 'TMemoryStream *'
[C++ Error] Unit3.cpp(62): E2342 Type mismatch in parameter 'Stream' (wanted 'TMemoryStream *', got 'TImage *')
[C++ Error] Unit3.cpp(62): E2227 Extra parameter in call to TAdd::IMG2Stream(TMemoryStream *)
0
Заблокирован
12.10.2012, 00:12
C++
1
IMG2Stream(MyStream);
Прочитайте на досуге про функции и процедуры, а так же желательно про классы (хотя бы краткую теорию), ибо чем дальше, тем больше будет встречаться подобных ситуаций.

Добавлено через 4 минуты
У вас в процедуре существует всего один аргумент типа TMemoryStream, когда вы вызываете процедуру, с указанием первого параметра в качестве AddImage типа TImage, компилятор пытается его использовать вместо Stream и в итоге получаем ошибку:
Цитата Сообщение от VAFER Посмотреть сообщение
[C++ Error] Unit3.cpp(62): E2034 Cannot convert 'TImage *' to 'TMemoryStream *'
Ибо компилятор не может преобразовать тип TImage к TMemoryStream.
Цитата Сообщение от VAFER Посмотреть сообщение
[C++ Error] Unit3.cpp(62): E2342 Type mismatch in parameter 'Stream' (wanted 'TMemoryStream *', got 'TImage *')
Тут компилятор уже начинает ругаться и сообщает озвученное выше и указывает, что нужен TMemoryStream, а ему какой-то TImage подсовывают.
Цитата Сообщение от VAFER Посмотреть сообщение
[C++ Error] Unit3.cpp(62): E2227 Extra parameter in call to TAdd::IMG2Stream(TMemoryStream *)
И под конец добивает сообщением, о неверном количестве параметров в методе IMG2Stream.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.10.2012, 00:12

Запись в базу SQL с запросом Inser into.select.where
Доброго времени суток! Возник вопрос по добавлении данный в базу с вложенным запросом select * Есть две таблице в базе 1- Таблица -...

Вставка картинки в базу данных через C#
Какой фуекцией можно реализовать вставку(загрузку из папки) картинку в таблицу базы данных?))) Ведь можно правда так сделать)

Вставка картинок в базу данных MS SQL
Здравствуйте. Мне нужно вставить картинки в базу данных MS SQL. Я сделал так, что в базе данных у меня хранятся пути к картинкам, а мне...

Вставка decimal в базу данных SQL server из maskedTextBox
Уважаемые форумчане! Помогите разобраться. Уже третий день пытаюсь внести значение decimal из maskedTextBox.Text в базу данных SQL...

Добавление картинки в sql базу
Такой вопрос, у меня на форме есть picturebox. И есть sql server база, в ней таблица с полем Image. Как добавить картинку из picturebox в...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 29)
anaschu 23.06.2026
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал Материалы для обсуждения с МГСУ · 2026 Рисунки внутри приложенного ворд файла. Что за. . .
28. Конкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования? Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная. Где разрыв . . .
27. Планы на разработку функциональных требований к строительству внутри модели пищеблока (или не только его?)
anaschu 22.06.2026
Что уже реализовано и даёт конфликты «бесплатно» Самый простой конфликт уже работает — конфликт за ресурс-работника. Заданий больше, чем доступных поваров → очередь в queue1. Это прямое отражение. . .
26. мед мат модель.Какие типы конфликтов функциональных требований можно рассчитать через ДЕС-моделирование (СМО) в AnyLogic?
anaschu 22.06.2026
Что ДЕС/ СМО умеет считать напрямую: Конфликты за ресурсы (очереди, узкие места). Несколько типов агентов (повара, учителя, рабочие, пациенты) претендуют на один ресурс (лифт, вход, коридор,. . .
25 модель здравосохранения и функциональных требований к пищеблоку: конфликты функциональных требований.
anaschu 22.06.2026
Есть ли данные о том, какие функциональные/ эксплуатационные требования или их сочетания труднее всего учитывать при проектировании зданий? Да, такие данные есть, и они хорошо описаны и в российской,. . .
Remote Connection Manager
DevAlt 21.06.2026
Написал для себя небольшую прилагу: https:/ / github. com/ altbodhi/ ReConMan По итогу пришел к мысли, что DU не дружат с существующими технологиями. От сериализации до отображения в реляционную. . .
Администрация Хабра удаляет новые энергоэфективные алгоритмы, которые не западной школы кода, и вовсе никак не сгенерированы
Hrethgir 20.06.2026
Делается это, как замечено, при правках - при объявлении концептуальных отличий в алгоримах. Делается это, по линейке событий - после дополнения публикации основными отличиями от основных западных. . .
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru