由于身体不好,好长时间没有来这里了。今天一来,就给大家添麻烦了。也许这个问题以前有人已提出。如何利用delphi将图片或视频文件保存或读入SQL server 数据库!

解决方案 »

  1.   


          if SaveDialog1.Execute then
          begin
            Savedir := SaveDialog1.FileName ;   
            TblobField(TmpAdo.FieldByName('Content')).SaveToFile(Savedir);
    以上为我之前写的一段代码,数据库中字段设为Image即可
      

  2.   

    不好意思,应该是这段:    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;
      

  3.   

    TblobField(TmpAdo.FieldByName('Content')).LoadFromFile(EdtFileDir.Text);
    晕,刚才想高亮显示,怎么不行
      

  4.   

    把字段设置为image
    然后
    保存:
    ParamByName('image字段').LoadFromFile(accessorySList.Names[nloop],ftGraphic);
    读取:
    一个是存为流一个是存为文件
    TBlobField(cdstmp.FieldByName('image字段')).SaveToStream();
    TBlobField(cdstmp.FieldByName('image字段')).SaveToFile();
    --------
    大概是这样的
      

  5.   

    用文件流我是这么作的,呵呵:
    var
      picstream:tadoblobstream;
      bmppic:tbitmap;
      jpgpic:tjpegimage;
      bmpstream:TMemoryStream;
      OpenPicDialog:TOpenPictureDialog;
    //以上是定义部分    adoquery1.SQL.Text:='select goodscode,picture from gds_goodscode with(nolock) where goodscode='+sgoodscode;
        adoquery1.open;
      //先查出来需要加图片的记录,然后edit
        adoquery1.Edit;
        if OpenPicDialog.Execute then
        begin
          jpgpic:=tjpegimage.Create;
          bmppic:=tbitmap.Create;
          bmpstream:=tmemorystream.Create;
          jpgpic.LoadFromFile(OpenPicDialog.filename); //加载文件
          bmppic.Assign(jpgpic);
          bmppic.SaveToStream(bmpstream);
          picstream:=tadoblobstream.Create(tblobfield(adoquery1.Fields[1]),bmWrite);
          picstream.LoadFromStream(bmpstream); 
          picstream.Position:=0;
          tblobfield(adoquery1.Fields[1]).loadfromstream(picstream);
        end;
      

  6.   

    谢谢各位的帮助!我又有一个小小的问题,还请大家帮忙。我用如下代码将图片存入了数据库,但用DBimage 控件显示出现了“Bitmap image is not valid”错误!
        ADOTable1.open;
       ADOTable1.append;
      if OpenDialog1.Execute then
        begin
           TblobField(ADOTable1.FieldByName('picture')).LoadFromFile(OpenDialog1.filename);
          ADOTable1.Post;
       end;
    //DBimage 控件显示图片
        DataSource1.DataSet:= ADOTable1;
        DBImage1.DataSource:=DataSource1;
        DBImage1.DataField:='picture'; 
      

  7.   

    按照zxf_feng介绍流的方法,我没有试成功,对于流我有些胆怯,觉得深奥。所以采用文件的形式。我用如下的形式显示图片是成功的,但我觉得对大量图片的显示是比较慢的;
    if SaveDialog1.Execute then
          begin
            Savedir := SaveDialog1.FileName ;
            TblobField(ADOTable1.FieldByName('picture')).SaveToFile(Savedir);
            Image1.picture.loadfromfile(Savedir);
     end;