DELPHI 与 .JPG 与 MS SQL SERVER.
一。TABLE字段类型怎么样设定?类型是什么,长度怎么设?
二。SQL SERVER中插入C:\ABC.JPG到以上字段的代码怎么写?替换图片呢。
三。怎么样将Image控件中显示的JPG图片插入到以上字段。
四。怎么读出以上字段的图片片到一个DELPHI的图片控件中。如image.
一。TABLE字段类型怎么样设定?类型是什么,长度怎么设?
二。SQL SERVER中插入C:\ABC.JPG到以上字段的代码怎么写?替换图片呢。
三。怎么样将Image控件中显示的JPG图片插入到以上字段。
四。怎么读出以上字段的图片片到一个DELPHI的图片控件中。如image.
http://topic.csdn.net/u/20071223/23/b2af0b0d-07aa-4664-96bd-4bd01e1c63fe.html
2、3、参考如下红色部分:procedure TFrmDocument.SpBtnAddClick(Sender: TObject);
var
sqlText: string;
TmpAdo: TAdoquery;
FileKind: string;
begin
if (EdtFileDir.Text = '') or (trim(EdtFileName.Text) = '') or (CmbKind.ItemIndex < 0) then
begin
MessageBox(Handle,'请将信息添加完整!','信息提示',MB_ICONWARNING + MB_OK);
exit;
end;
try
TmpAdo := TAdoquery.Create(nil);
sqlText := 'select * from DocumentTb where 1<>1';
FrmDm.OpenSql(TmpAdo,sqlText);
FileKind := Rightstr(EdtFileDir.Text,4);
TmpAdo.Append;
TmpAdo.FieldByName('FileName').Value := EdtFileName.Text+FileKind;
TmpAdo.FieldByName('KindId').Value := (CmbKind.Items.Objects[CmbKind.ItemIndex] as TCombKind).AKindId;
TmpAdo.FieldByName('SaveTime').Value := FormatDateTime('yyyy-mm-dd',DateTimePicker1.Date);
TblobField(TmpAdo.FieldByName('Content')).LoadFromFile(EdtFileDir.Text);
TmpAdo.Post;
{日志}
WriteLog(CUR_USER.UserID,DateTimeTostr(Now()),IntTostr(LOG_DOCUMENT),
'新增文档<'+EdtFileName.Text+'>');
EdtFileDir.Text := '';
EdtFileName.Text := '';
CmbKind.ItemIndex := 0;
TmpAdo.Free;
sqlText := 'select * from DocumentTb';
FrmDm.OpenSql(FrmDm.AQDecument,sqlText);
except
MessageBox(Handle,'添加信息失败!','信息提示',MB_ICONWARNING + MB_OK);
end;
end;
4、参考如下代码:var
sqlText: string;
Savedir: string;
TmpAdo: TAdoquery;
begin
if trim(EdtFileName.Text) <> '' then
begin
TmpAdo := TAdoquery.Create(nil);
try
sqlText := 'select * from DocumentTb where FileName = '''+EdtFileName.Text+'''';
FrmDm.OpenSql(TmpAdo,sqlText);
SaveDialog1.FileName := trim(TmpAdo.fieldbyname('FileName').AsString);
SaveDialog1.DefaultExt := ExtractFileExt(trim(TmpAdo.fieldbyname('FileName').AsString));
SaveDialog1.Filter := ExtractFileExt(trim(TmpAdo.fieldbyname('FileName').AsString));
if self.SaveDialog1.Execute then
begin
Savedir := self.SaveDialog1.FileName ;
TblobField(TmpAdo.FieldByName('Content')).SaveToFile(Savedir);
ShellExecute(Handle, 'open', PChar(Savedir), nil, nil, SW_SHOW);
end;
finally
TmpAdo.Free;
end;
end;
end;
二。SQL SERVER中插入C:\ABC.JPG到以上字段的代码怎么写?替换图片呢。
三。怎么样将Image控件中显示的JPG图片插入到以上字段。
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
filename :string;
srm:TStringStream;
begin
try
if opendialog1.Execute then
filename:=opendialog1.FileName ;
image1.Picture.LoadFromFile(filename);
srm:=TStringStream.Create('');
image1.Picture.Graphic.SaveToStream(srm) ; with adoquery1 do
begin
close;
sql.clear;
sql.Add('insert into picture(name) values(:stream)');
parameters.ParamByName('stream').LoadFromStream(srm,ftblob);
execsql;
showmessage('图片保存成功');
end;
finally
srm.Free ;
end;
end;
四。怎么读出以上字段的图片片到一个DELPHI的图片控件中。如image.procedure TForm1.Timer1Timer(Sender: TObject);
var
srm:TStringStream;
begin
try
srm:=TStringStream.Create('');
with adoquery1 do
begin
active:=true;
next;
Tblobfield(fieldbyname('name')).SaveToStream(srm);
srm.Position:=0;
image1.Picture.Graphic.loadfromstream(srm);
if eof then
first;
end; finally
srm.Free;
end;
end;
最后,还是提醒楼主不要这样做占空间查询又慢,最好还是用文件路径。