从数据库里读取图片并显示

本文介绍了一种从数据库的Blob字段中读取并显示图片的方法。通过使用TADOBlobStream,我们可以将图片数据从数据库读取到内存中,然后将其保存到临时文件,最后在图像控件上显示该图片。这种方法适用于需要在应用程序中动态加载和显示数据库中存储的图片场景。

procedure TForm_QTOrder1.ShowPic;
var
  vStr:TADOBlobStream;
  vTmp,vPicType:string;
  vtmpPath:PChar;
begin
  inherited;

  Image1.Picture.Graphic:=nil;  //清空图像控件里的图像
  vstr:=TADOBlobStream.Create(TBlobField(QueryBill4.FieldByName('Pics')),bmRead);  //创建BlobStream,设定Pics字段为Blob字段,并设为只读
  if vstr.Size=0 then  //Stream的大小为0说明没有图像,退出
  begin
    exit;
  end;
  vPicType:=CheckImgType(vStr);    //判断图像类型
  vstr.Position:=0;                                 //指针移动到开头
  GetMem(vtmpPath,MAX_PATH);  //获取临时目录
  GetTempPath(MAX_PATH,vtmpPath);//获取临时目录
  vTmp:=StrPas(vtmpPath);            //获取临时目录
  FreeMem(vtmpPath);  //释放变量
  vTmp:=vTmp+PubData1.GetGUIDString+'.'+vPicType;  //将临时目录和文件名合成全路径文件名
  TBlobField(QueryBill4.FieldByName('Pics')).SaveToFile(vTmp);  //从Blob字段读取图像数据保存到临时文件
  Image1.Picture.LoadFromFile(vTmp);  //图像控件读取临时文件
  DeleteFile(vTmp);  //删除临时文件
  Application.ProcessMessages;
end;

在ASP.NET(C#)中,从数据库读取图片将其显示到网页上通常涉及到几个步骤: 1. **连接数据库**: 使用ADO.NET库(如Entity Framework、ADO.NET Entity Data Model 或 SqlConnection等)建立与数据库的连接。 ```csharp using (SqlConnection connection = new SqlConnection(connectionString)) { // 连接字符串包含数据库信息 connection.Open(); } ``` 2. **查询图片数据**: 编写SQL查询来获取所需的图片数据,包括图片文件名、路径或其他必要的元数据。 ```csharp string query = "SELECT ImagePath FROM Images WHERE ID = @imageId"; SqlCommand command = new SqlCommand(query, connection); command.Parameters.AddWithValue("@imageId", yourImageId); SqlDataReader reader = command.ExecuteReader(); ``` 3. **处理读取结果**: 遍历`SqlDataReader`以获取图片路径,然后使用`File控件`或`ImageUrl属性`将图片加载到网页上。 ```csharp if (reader.Read()) { string imagePath = reader.GetString(0); Image imageTag = new Image(); imageTag.ImageUrl = "/Images/" + imagePath; // 将ImageTag添加到您的页面中 Controls.Add(imageTag); } ``` 4. **释放资源**: 关闭`SqlDataReader`,确保关闭数据库连接。 ```csharp reader.Close(); connection.Close(); ``` 5. **错误处理**: 考虑可能出现的异常情况,提供适当的错误处理。 注意:实际应用中,为了安全起见,应避免直接在URL中使用用户输入的数据(例如来自数据库),以防SQL注入攻击。可以使用服务器端的相对路径或使用一些安全性更高的图片显示机制(如ASP.NET MVC的ActionResults)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值