Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.03.11;
Скачать: CL | DM;

Вниз

Картинка в mysql   Найти похожие ветки 

 
jacksotnik   (2011-11-22 16:55) [0]

Удалено модератором
Примечание: СПАМ


 
Плохиш ©   (2011-11-22 17:06) [1]

BLOB


 
jacksotnik   (2011-11-22 17:13) [2]

Это я уже понял. А как правильно с делфей загрузить картинку в базу. И потом подтягивать с базы чтоб отображать на форме(какой компонент)?


 
Плохиш ©   (2011-11-22 17:16) [3]

Обучение программированию только за деньги.


 
Anatoly Podgoretsky ©   (2011-11-22 17:20) [4]

> jacksotnik  (22.11.2011 16:55:00)  [0]

БЛОБ, запросом, TImage/TDBImage


 
jacksotnik   (2011-11-22 17:24) [5]


> БЛОБ, запросом, TImage/TDBImage

А можно пример запроса. Пусть например у меня есть путь к файлу, как должен выглядеть запрос? Понимаю как записать текст в поле а вот как загрузить всю картинку в поле непойму. Можно небольшой пример


 
Плохиш ©   (2011-11-22 17:35) [6]


TBlobField wird für ein Feld in einer Datenmenge verwendet, das eine Referenz auf ein BLOB enthält.

Unit

DB

Beschreibung

TBlobField kapselt das fundamentale Verhalten von BLOB-Feldern (Binary Large Object). BLOB-Felder sind Datenbankfelder, die binäre Daten in beliebiger Länge enthalten können. BLOB-Feldkomponenten können unterschiedliche Datentypen von beliebiger Länge repräsentieren. Der jeweilige Datentyp wird im Header der binären Daten angegeben.

Neben den direkt unterstützten Feldtypen ist TBlobField der direkte Vorfahr zweier BLOB-Feldkomponenten: TMemoField (ftMemo) und TGraphicField (ftGraphic). Diese abgeleiteten Klassen werden für BLOB-Felder mit für Memo- bzw. Grafikdaten typischen Headern verwendet.

TBlobField führt neue Methoden ein, um Daten im BLOB-Feld in einen Stream zu stellen. Außerdem sind Methoden zum Kopieren von Binärdaten zwischen dem BLOB-Feld und einer Binärdatei implementiert. Mit dem von der Methode CreateBlobStream der Datenmenge zurückgegebenen Stream können auch von einem BLOB-Feld verwalteten Daten gelesen oder geschrieben werden.

Wenn Sie während des Entwurfs mithilfe des Felder-Editors eine persistente Feldkomponente für das BLOB-Feld erstellen, können Sie es zur Laufzeit über seinen Namen ansprechen. Verwenden Sie dynamische Feldomponenten, so haben Sie über die Eigenschaft Fields oder die Methode FieldByName der Datenmenge Zugriff auf die TBlobField-Instanz.


Die Methode LoadFromFile lädt einen BLOB-Daten aus einer Datei in das Feld.

Delphi-Syntax:

procedure LoadFromFile(const FileName: string);

C++ Syntax:

void __fastcall LoadFromFile(const AnsiString FileName);

Beschreibung

Mit LoadFromFile wird der Inhalt einer Datei in ein BLOB-Feld geladen. Geben Sie den Namen der Datei, die in das Feld geladen werden soll, als Wert des Parameters FileName an.

if not (Query.State in [dsInsert, dsEdit]) then Query1.Insert;
Query1Images.LoadFromFile("c:\Windows\Waves.bmp");
Query1.Post;


 
Медвежонок Пятачок ©   (2011-11-22 17:35) [7]

запрос должен выглядеть красиво.


 
Anatoly Podgoretsky ©   (2011-11-22 17:36) [8]

> jacksotnik  (22.11.2011 17:24:05)  [5]

Seleсt [картинка] FROM [сервер]


 
jacksotnik   (2011-11-22 17:44) [9]


> Плохиш ©

Спасибо


 
И. Павел ©   (2011-11-22 18:51) [10]

Вот загрузка:
   if not MainForm.DSCars.FieldByName("img").IsNull then
   begin
     ms := TMemoryStream.Create;
     try
       TBLOBField(MainForm.DSCars.FieldByName("img")).SaveToStream(ms);
       ms.Position := 0;
       bmp := TBitmap.Create;
       try
         bmp.LoadFromStream(ms);
         //теперь можно работать с bmp, например, скопировать его в TImage Img.Picture.Assign(Bmp);
       finally
         bmp.Free;
       end;
     finally
       ms.Free;
     end;
   end;  


Вот сохранение:
 ADOC.CommandText := "INSERT INTO ... (..., img) " +
                     "VALUES (..., :PImg)"
 ADOC.Parameters.ParamByName("PImg").DataType := ftBlob;
 s := TMemoryStream.Create;
 try
   Img.Picture.Bitmap.SaveToStream(s);
   s.Position := 0;
   ADOC.Parameters.ParamByName("PImg").LoadFromStream(s, ftBlob);
 finally
   s.Free;
 end;  
 ADOC.Execute;


 
Jeer ©   (2011-11-22 20:09) [11]

Еще было бы неплохо на асм-е воплотить - вот, где раздолье.


 
jacksotnik   (2011-11-23 11:46) [12]

Значит делаю так:
myquery1.SQL.Add("INSERT INTO client(photo)");
myquery1.SQL.Add("VALUES(:p1)");
myquery1.ParamByName("p1").LoadFromFile(fname,ftGraphic);
myquery1.execute;

выбираю jpg или bmp файл и сразу после выбора выдает ошибку
data type is not supported

тип поля в базе blob


 
Медвежонок Пятачок ©   (2011-11-23 11:52) [13]

это ftBlob


 
jacksotnik   (2011-11-23 12:49) [14]

Вылез новый прикол при выполнении данного запроса вылезает ошибка
"Lost Connection to MySQL server during query" именно когда пытаюсь писать картинку в это blob поле, как только убираю запись картинки то запрос выполняется отлично все данные записываются


 
Anatoly Podgoretsky ©   (2011-11-23 14:01) [15]

> jacksotnik  (23.11.2011 12:49:14)  [14]

Шутник


 
clickmaker ©   (2011-11-23 14:05) [16]

> [14] jacksotnik   (23.11.11 12:49)

max_allowed_packet чему равно?
размер картинки какой?
какие таймауты на запись выставлены?
версия MySql не слишком древняя? может, имеет смысл обновить


 
jacksotnik   (2011-11-23 16:31) [17]


> clickmaker

понял к чему вы клоните. Спасибо. Временно решил этот вопрос хранением в базе пути к файлу.


 
jacksotnik   (2011-11-29 13:45) [18]

Так вернемся к моему вопросу. Значит в базу прекрасно записывается картинка причем в любом формате. А вот выгрузить так как написал И. Павел
не получается. так как в базе картинка в jpg формате.



Страницы: 1 вся ветка

Текущий архив: 2012.03.11;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.012 c
1-1286692304
Lex_!
2010-10-10 10:31
2012.03.11
Работа с элементами IE


15-1321220394
KilkennyCat
2011-11-14 01:39
2012.03.11
TCanvas & HTML


6-1253185020
bvv
2009-09-17 14:57
2012.03.11
Проблема с потоками сканирования


15-1321561802
Юрий
2011-11-18 00:30
2012.03.11
С днем рождения ! 18 ноября 2011 пятница


15-1322026771
И. Павел
2011-11-23 09:39
2012.03.11
Скиньте, пожалуйста, mc.exe