Форум: "Базы";
Текущий архив: 2007.07.01;
Скачать: [xml.tar.bz2];
ВнизBlob поля в MySQLe Найти похожие ветки
← →
Xmen (2007-03-14 14:29) [0]Добрый день мастера.
Вот такой у меня вопрос делаю(уже 3 года работает, апгрейт) прогу которая делает регистрацию входяших письм. В базе нужно сохранит оригинал этого письма (док. изображения отсканированный, текст итп). Как это можно сохранит в Мускуле и потом его открыт.
← →
Плохиш © (2007-03-14 15:06) [1]
> Как это можно сохранит в Мускуле и потом его открыт.
Это вопрос? Тогда ответом будет Ваш сабж :-)
← →
Xmen (2007-03-15 07:18) [2]Извиняюсь если неправильно сформировал вопрос.
Мне действительно интересует как можно файлы сохранит в базе MySQL e и потом его открыт для чтения средствами Дельфи. Или подскажите в каком направление искать.
← →
sniknik © (2007-03-15 08:32) [3]блоб поля это и есть направление, оно у тебя в заголовке...
а вот уже пройдено на две трети -> у них есть методы loadfromfile/stream и такие же saveto....
← →
Xmen (2007-03-15 08:57) [4]спасибо за подсказку сейчас попробую
← →
Xmen (2007-03-16 14:25) [5]Создал базу в нем таблицу с блоб полем но как туда записать не получается, наверно не туда копаю. Можете пример показать а то я еще пару недел буду искат а потом наверно опят к вам.
← →
Xmen (2007-03-16 14:46) [6]В сети нашел вот такой пример для записи в блоб поле. Но как им пользоватся я не понимаю.
procedure TForm1.Button1Click(Sender: TObject);
var
blob: TBlobStream;
begin
blob := yourDataset.CreateBlobStream(yourDataset.FieldByName("YOUR_BLOB"), bmWrite);
try
blob.Seek(0, soFromBeginning);
fs := TFileStream.Create("c:your_name.doc", fmOpenRead or
fmShareDenyWrite);
try
blob.CopyFrom(fs, fs.Size)
finally
fs.Free
end;
finally
blob.Free
end;
end;
← →
Desdechado © (2007-03-16 15:17) [7]
Query1.Sql.Text :=
"INSERT INTO testblob " +
" ( " +
" fBlob" +
" )" +
" VALUES" +
" (" +
" :ParamBlobField" +
")";
Query1.ParamByName("ParamBlobField").DataType := ftBlob;
Query1.ParamByName("ParamBlobField").ParamType := ptInput;
Query1.ParamByName("ParamBlobField").LoadFromFile("MyFile",ftBlob);
Query1.ExecSql;
← →
sniknik © (2007-03-16 16:15) [8]> В сети нашел вот такой пример для записи в блоб поле. Но как им пользоватся я не понимаю.
вечно они усложняют... не ходи больше в сеть...
procedure TForm1.Button1Click(Sender: TObject);
begin
TBlobField(yourDataset.FieldByName("YOUR_BLOB")).LoadFromField.../Stream...;
end;
← →
sniknik © (2007-03-16 16:16) [9]опс... LoadFromField = LoadFromFile
← →
Xmen (2007-03-19 07:15) [10]Спосибо за примера.
а можно еще вопрос
это куда я его буду извликать данный из блоба?
← →
Плохиш © (2007-03-19 11:03) [11]
> это куда я его буду извликать данный из блоба?
Велик и могуча руския языку... Сам-то понял, что спросил?
← →
Xmen (2007-03-19 12:25) [12]Да наверно слова перепутал изза нагрузки в голове.
Повторно
Как можно сохранить в блоб поля данные и потом их загрузить подходяший редактор для просмотра.
← →
Xmen (2007-03-19 12:28) [13]Вот что я сделал
Для сохранения данных (файла)
procedure TMainForm.SpeedButton1Click(Sender: TObject);
var
BS,fs:TStream;
begin
if OpenDialog1.Execute then
begin
DBEdit7.Text:=OpenDialog1.FileName;
bs := DMKanc.tbMain.CreateBlobStream(DMKanc.tbMain.FieldByName("Files"), bmWrite);
try
bs.Seek(0, soFromBeginning);
fs := TFileStream.Create(DBEdit7.Text, fmOpenRead or fmShareDenyWrite);
try
bs.CopyFrom(fs, fs.Size)
finally
fs.Free
end;
finally
bs.Free
end;
end;
end;
И загузка из базы
var
blob: TStream;
path, fName:string;
begin
path:= ExtractFilePath(Application.ExeName);
fName := path+"temp\"+ExtractFileName( DMKanc.tbMain.FieldByName("Fails").AsString);
blob := DMKanc.tbMain.CreateBlobStream(DMKanc.tbMain.FieldByName("Files"), bmRead);
try
blob.Seek(0, soFromBeginning);
with TFileStream.Create(fName, fmCreate) do
try
CopyFrom(blob, blob.Size)
finally
Free
end;
finally
blob.Free
end;
ShellExecute(handle,nil,pchar(fName),nil,nil,SW_RESTORE);
составил код из примеров, может что то я неправильно сделал? может есть короткый путь?
← →
Плохиш © (2007-03-19 14:02) [14]
> Xmen (19.03.07 12:28) [13]
TBlobField имеет методы LoadFromStream/LoadFromFile и SaveToStream/SaveToFile соответственно...
← →
Xmen (2007-03-19 15:31) [15]Спасибо помогло
Я рад что есть такие люди как вы.
Еще вопрос по этой теме
А имя файла тоже хранится в блоб поле? если есть как можно его получит.
а то я имя файла в другое поля пишу.
← →
Плохиш © (2007-03-19 15:58) [16]
> А имя файла тоже хранится в блоб поле?
Нет, блоб хранит только набор байтов
> а то я имя файла в другое поля пишу.
Так и продолжай
← →
Xmen (2007-03-19 16:02) [17]Спасибо всем! :) :) :)
← →
Aazmandyus (2007-04-03 04:12) [18]СУБД MySQL 5.0
соединяюсь через ODBC
в запросе присутствуют строки:
ADOQuery1.Parameters.AddParameter.Name:="ParamBlobField";
ADOQuery1.Parameters.ParamByName("ParamBlobField").DataType:=ftBlob;
ADOQuery1.Parameters.ParamByName("ParamBlobField").Direction:=pdInput;
ADOQuery1.Parameters.ParamByName("ParamBlobField").LoadFromFile(Unit4.FName, ftBlob);
QText:=QText+":ParamBlobField);";
ADOQuery1.SQL.Add(QText);
ADOQuery1.ExecSQL;
Гавкает "Недопустимый тип!" и вылетает не добавляя запись в базу. Как бороться, а?
← →
ЮЮ © (2007-04-03 07:35) [19]Сначалв следует сформировать текст параметрического запроса, а затем возиться с его Parameters, а никак не наоборот.
← →
Aazmandyus (2007-04-03 11:47) [20]QText:=QText+":ParamBlobField);";
ADOQuery1.SQL.Add(QText);
ADOQuery1.Parameters.ParamByName("ParamBlobField").DataType:=ftBlob;
ADOQuery1.Parameters.ParamByName("ParamBlobField").Direction:=pdInput; ADOQuery1.Parameters.ParamByName("ParamBlobField").LoadFromFile(Unit4.FName, ftBlob);
ADOQuery1.ExecSQL;
Опять гавкает "Недопустимый тип!".
← →
Aazmandyus (2007-04-03 18:43) [21]Кстати, гавкает он на русском! Именно "Недопустимый тип!" как я и написал. Возможно это бока с драйверами ODBC, т.е. дрова не позволяют таким образом работать с blob? Или тут уместна "притча о танцоре и яицах"? =Р
← →
Aazmandyus (2007-04-03 20:54) [22]яйца с танцором отдыхают. бока в odbc. скачал MyDAC, заменил ADOConnection на MyConnection, ADOQuery на MyQuery немного подкорректрировал названия процедур, в соответствии с новыми компонентами, и все заработало.
только теперь другой вопрос, что делать через 60 дней, когда триал закончится? :(
может кто знает, где достать MyDAC халявный, или всетаки прийдется покупать? :(
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.07.01;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.005 c