image写入SQL语句

ou630j 2008-12-08 03:01:30
我有一个SQL的表
字段1 varchar(50)
字段2 image(16)

现在我要做的事情是怎么样把界面上Image1控件上的图片存进
表中
说明Image1上的图片已经装载进去,没有就为空
现在求两条语句
insert
'insert into 表(字段1,字段2) values(1,?)';

和update
根据字段1判断,判断语句可以不用写
update from 表 set 字段2=?
?这里等于Image1上加载的图片

然后读取的时候又如何把字段2显示在Image1上

请大虾指教
...全文
538 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
try__again 2008-12-09
  • 打赏
  • 举报
回复
image转换成memerystream,通过ado的存blob字段的方法实现
woniugongzuoshi 2008-12-09
  • 打赏
  • 举报
回复
翻下老贴子,很多人问过这个问题了
AiNi521365886 2008-12-09
  • 打赏
  • 举报
回复
  1. 图像数据的选择及保存

procedure Tform1.selectimageClick(Sender: TObject); //选择图像
begin
if openpicturedialog1.Execute then
image1.Picture.LoadFromFile(openpicturedialog1.FileName );
end;
procedure Tform1.savetodbClick(Sender: TObject); //保存图像到数据库
var
ext:string;
begin
if image1.picture.Graphic <> nil then //避免image1中无图像保存出错
begin
adotable1.Edit ;
adotable1.FieldByName('myimage').Assign(image1.Picture.Graphic);
//以下记录保存到数据库的图像格式
ext:=extractfileext(openpicturedialog1.FileName ); //取出文件扩展名
if uppercase(ext) = '.BMP' THEN
adotable1.FieldByName('isbmp').VALUE := 1 //BMP型图像数据
ELSE IF (UPPERCASE(EXT) = '.JPEG') OR (UPPERCASE(EXT) = '.JPG') THEN
adotable1.FieldByName('isbmp').VALUE := 0; //JPEG型图像数据
ADOTABLE1.Post ;
end;
end;

  2. 图像数据的读取及显示

procedure Tform1.ADOTable1AfterScroll(DataSet: TDataSet); //ADOTable1的AfterScroll事件方法程序
 var
  jpegimage:tjpegimage;
 begin
  image1.Picture.Graphic :=nil;
  //下边BMP、JPEG两种图像数据必需分别处理
  if adotable1.fieldbyname('isbmp').Asstring = '1' then //BMP型图像数据
   image1.Picture.bitmap.Assign(adotable1.fieldbyname('myimage'))
   //上边语句中的bitmap不能为graphic,否则会出错
  else if adotable1.fieldbyname('isbmp').asstring = '0' then //JPEG型图像数据
   begin //begin2
    jpegimage := tjpegimage.Create ; //通过jpegimage将图像显示在image1,否则会出错
    try
     jpegimage.Assign(adotable1.fieldbyname('myimage'));
     image1.Picture.Graphic :=jpegimage;
    finally
     jpegimage.Free ;
    end; //end try
  end; //end begin2
end;
tjg5202 2008-12-09
  • 打赏
  • 举报
回复
'pictureFilepath'是图片路径。。。。
ou630j 2008-12-09
  • 打赏
  • 举报
回复
可我用
ADOQuery1.Parameters.ParamByName('id2').Assign('Image1.pictrue');
这样不行?那个'pictureFilepath'怎么写的,我就是试过才上网问的,大虾
eqapple 2008-12-08
  • 打赏
  • 举报
回复

{插入}
ADOQuery1.Close;
ADOQuery1.SQL.Text:='insert into table_name (col1,col2) values (:id1,:id2)';
ADOQuery1.Parameters.ParamByName('id1').Value:= 'values';
ADOQuery1.Parameters.ParamByName('id2').Assign('pictureFilepath');
ADOQuery1.ExecSQL;
{更新}
ADOQuery1.Close;
ADOQuery1.SQL.Text:='update table_name set col1=:id1,col2=:id2';
ADOQuery1.Parameters.ParamByName('id1').Value:= 'values';
ADOQuery1.Parameters.ParamByName('id2').Assign('pictureFilepath');
ADOQuery1.ExecSQL;

ou630j 2008-12-08
  • 打赏
  • 举报
回复
大虾
现在我要的是插入和更新的语句
ajiwuweibin 2008-12-08
  • 打赏
  • 举报
回复
保存
ADOQuery1.Open;
ADOQuery1.Append;
TBlobField(ADOQuery1.FieldByName( 'F_IMAGE ')).LoadFromFile(OpenPictureDialog1.FileName);
ADOQuery1.Post;

显示
TBlobField(ADOQuery1.FieldByName( 'F_IMAGE ')).SaveToFile( 'c:\temp '+ADOQuery1.FieldByName( 'F_EXT ').AsString);
Image2.Picture.LoadFromFile( 'c:\temp.bmp ');
ou630j 2008-12-08
  • 打赏
  • 举报
回复
高手,代码点写
luxuewei5214 2008-12-08
  • 打赏
  • 举报
回复
把图片转为blobfield类型来存储
ou630j 2008-12-08
  • 打赏
  • 举报
回复
Image1的图片格式为bmp或jpg

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧