1、路径  imgPath:string;//比如已经得到了图片路径
2、SQL2000 数据库  表名 ttbtestimg  字段名  img  字段类型image
3、请给一个完整代码,将此路径下的图片,存入数据库,相应表的相应字段中
4、请给出一段完整代码,将此表中的图片显示在图片控件上
4、请给出注释
5、程序一通,立即给分

解决方案 »

  1.   

    这个有很多人问过,给你一个参考吧
    http://topic.csdn.net/t/20051215/18/4461795.html
    .....程序还是要自己写的......
      

  2.   

    //把文件存入数据库中
    //tempdataset是一个数据集,在使用这个函数的时候,数据集必须是处于edit或insert状态
    //这个函数可以做为公用函数
    procedure PhotoToDB(imgpath:string;tempdataset: TDataSet);
    begin
       try
          try
            (TBlobField(tempdataset.FieldByName('img'))).LoadFromFile(imgpath);
          except
          end;
       finally
         if FileExists(imgpath) then //这是删除图片文件
            DeleteFile(imgpath);
       end;
    end;
    //从数据库在取出图片并显示在Image中
    //image控件,tempDataSet数据集。这个数据集必须是open状态(即是打开查询状态)
    procedure DBToPhoto( image: Timage; tempDataSet: TADOQuery);
    var
      tempFile:string;//临时存放图片的路径(包括文件名)
    begin
      try
      //ExtractFilePath获取当前程序路径,创建一个临时图片文件
        tempFile:=ExtractFilePath(Application.ExeName)+'tmp.jpg';
         if not tempDataSet.FieldByName(phoneField).IsNull then
         begin
            try
              (TBlobField(tempDataSet.FieldByName(phoneField))).SaveToFile(tempFile);
              image.Picture.LoadFromFile(tempFile);
            except
            end;
         end
         else
           Image.Picture.Graphic:=nil;
      finally
       if FileExists(tempFile) then DeleteFile(tempFile);
      end;
    end;
    注意:以上图像都是以jpg为例的。如果你是存储bmp.保存的函数不用修改。取出时那个图片的后缀改成bmp就行了.
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      picstream:tadoblobstream;
      bmppic:tbitmap;
      jpgpic:tjpegimage;
      bmpstream:TMemoryStream; 
      OpenPicDialog:TOpenPictureDialog;
    begin
      try
        OpenPicDialog:=TOpenPictureDialog.Create(nil);
        OpenPicDialog.Filter:='All *.jpg;|*.jpg;)';
        with AdoQuery1 do
        begin
          close;
          sql.text := 'Insert into ttbtestimg(id) values(1)';
          ExecSql;
          SQL.Text := 'select id,img from ttbtestimg with(nolock) where id=1';
          Open;
          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;
          Post;
        end;
      finally
        OpenPicDialog.Free;
      end;
    end;
      

  4.   


    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;
      

  5.   

    TblobField(TmpAdo.FieldByName('Content')).LoadFromFile(EdtFileDir.Text);