Форум: "Начинающим";
Текущий архив: 2012.03.11;
Скачать: [xml.tar.bz2];
ВнизКартинка в 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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.003 c