大家好,我在做一个管理系统.其中要在程序中涉及到图片的存储问题.我查了好多资料.大多是用dbrid与数据集做绑定,我不希望用这种方法.而是直接用sql语句添加.但是程序报错.大家无私奉献吧,马上就过年了.请大家帮帮我.呵呵.分数大大的有.好心人有原码请传上来参考好吗?分数奖励:>
我的原码是这样的,请指点.
form1.adoquery1.close;
form1.adoquery1.sql.clear;
form1.adoquery1.sql.add('insert into customertalbe values(:p1,:p2)');
form1.adoquery1.parameters.parambyname('p1').value:=
trim(form1.edit1.text);
form1.ADOQuery1.Parameters.ParamByName('p2').LoadFromStream (form1.bmpstream,ftBlob);
try
form1.adoquery1.execsql;
except end;运行时程序报错:参数类型不对.我想一定是大二进制类型参数赋值错误,但是不知怎样改.请大家积极发言.帮小弟过了年关.感激不尽.
我的原码是这样的,请指点.
form1.adoquery1.close;
form1.adoquery1.sql.clear;
form1.adoquery1.sql.add('insert into customertalbe values(:p1,:p2)');
form1.adoquery1.parameters.parambyname('p1').value:=
trim(form1.edit1.text);
form1.ADOQuery1.Parameters.ParamByName('p2').LoadFromStream (form1.bmpstream,ftBlob);
try
form1.adoquery1.execsql;
except end;运行时程序报错:参数类型不对.我想一定是大二进制类型参数赋值错误,但是不知怎样改.请大家积极发言.帮小弟过了年关.感激不尽.
var strm:tmemorystream;
begin
strm:=tmemorystream.Create;
try
strm.LoadFromFile('c:\1.bmp');
adoconnection1.Connected:=true;
adostoredproc1.Close;
adostoredproc1.ProcedureName:='test_proc1';
adostoredproc1.Parameters.Refresh;
adostoredproc1.Parameters.ParamValues['@id']:=1;
adostoredproc1.Parameters.ParamByName('@blb').LoadFromStream(strm,ftblob);
adostoredproc1.Prepared;
adostoredproc1.ExecProc;
finally strm.Free;end;
end;
http://expert.csdn.net/Expert/topic/2522/2522259.xml?temp=.8197443
var
MyJPEG : TJPEGImage;
MS: TMemoryStream;
begin
openpicturedialog1.Execute;
if openpicturedialog1.FileName<>'' then
begin
image.Picture.LoadFromFile(openpicturedialog1.FileName);
openpicturedialog1.FileName:='';
MyJPEG := TJPEGImage.Create;
try
with MyJPEG do
begin
Assign(Image.Picture.Graphic);
MS:=TMemoryStream.create;
SaveToStream(MS);
MS.Position:=0;
adotable1.Append;
TBlobField(adotable1.FieldbyName('photo')).LoadFromStream(MS);
adotable1.Post;
messagebox(getactivewindow(),'图像保存完毕!','保存',mb_ok);
image.Picture.CleanupInstance;
end;
finally
MyJPEG.Free;
end;
end;
显示图片
var
tempstream:TStringStream;
tempjpeg:TJPEGImage;
begin
try
tempstream:=TStringStream.Create(' ');
TBlobField(adodataset1.FieldByName('photo')).SaveToStream(tempstream);
tempstream.Position:=0;
tempjpeg:=TJPEGImage.Create;
tempjpeg.LoadFromStream(tempstream);
DBImage1.Picture.Bitmap.Assign(tempjpeg);
finally
tempstream.Free;
tempjpeg.Free;
end;
end;
begin
close;
sql.Text:='select * from file_update where program='''+combobox1.Text+''' ';
open;
edit;
insert;
l_FileStream := TFileStream.Create(edit2.Text, fmShareDenyNone);//edit2.text放的是一个文件的路径及名字
l_FileStream.Position := 0;
TBlobField(FieldByName('filedata')).loadfromStream(l_FileStream); FieldByName('filename').Value:=edit3.Text;
FieldValues['filesize']:=l_fileStream.Size ;
FieldValues['program']:=combobox1.Text;
FieldValues['ver']:=edit1.Text;
end;
with adoquery1 do
begin
close;
sql.Text:='select * from file_update where program='''+combobox1.Text+''' ';
open;
edit;
insert;
l_FileStream := TFileStream.Create(edit2.Text, fmShareDenyNone);//edit2.text放的是一个文件的路径及名字
l_FileStream.Position := 0;
TBlobField(FieldByName('filedata')).loadfromStream(l_FileStream); FieldByName('filename').Value:=edit3.Text;
FieldValues['filesize']:=l_fileStream.Size ;
FieldValues['program']:=combobox1.Text;
FieldValues['ver']:=edit1.Text;
end;
form1.adoquery1.close;
form1.adoquery1.sql.clear;
form1.adoquery1.sql.add('insert into table1 values(:P1,:p2)');
form1.adoquery1.parameter.parambyname('p1').value:=form1.edit1.text;
bmpstream.position:=0;//关键一步
form1.adoquery1.parameter.parambyname('p1').loadfromstream(bmpstrean,ftblob);
try
form1.adoquery1.execsql;
exception end;