Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > ADP及SQL SERVER

ASP.NET如何存取SQL Server数据库图片

时 间:2006-07-28 00:00:00
作 者:UMVsoft整理   ID:8  城市:上海  QQ:2851379730点击这里给张志发消息
摘 要:ASP.NET如何存取SQL Server数据库图片 
正 文:

 SQL Server提供了一个特别的数据类型:image,它是一个包含binary数据的类型。下边这个例子就向你展示了如何将文本或照片放入到数据库中的办法。在这篇文章中我们要看到如何在SQL Server中存储和读取图片。
  
  1、建立一个表:
  在SQL SERVER中建立这样结构的一个表:
  

  2、存储图片到SQL SERVER数据库中
  为了能存储到表中,你首先要上传它们到你的WEB 服务器上,你可以开发一个web form,它用来将客户端中TextBox web control中的图片入到你的WEB服务器上来。将你的 encType 属性设置为:myltipart/formdata.
  
  Stream imgdatastream = File1.PostedFile.InputStream;
  int imgdatalen = File1.PostedFile.ContentLength;
  string imgtype = File1.PostedFile.ContentType;
  string imgtitle = TextBox1.Text;
  byte[] imgdata = new byte[imgdatalen];
  int n = imgdatastream.Read(imgdata,0,imgdatalen);
  string connstr=((NameValueCollection)Context.GetConfig("appSettings"))["connstr"];
  
  SqlConnection connection = new SqlConnection(connstr);
  
  SqlCommand command = new SqlCommand
         ("INSERT INTO ImageStore(imgtitle,imgtype,imgdata)
         VALUES ( @imgtitle, @imgtype,@imgdata )", connection );
  
  SqlParameter paramTitle = new SqlParameter
         ("@imgtitle", SqlDbType.VarChar,50 );
  
  paramTitle.Value = imgtitle;
  command.Parameters.Add( paramTitle);
  
  SqlParameter paramData = new SqlParameter( "@imgdata", SqlDbType.Image );
  paramData.Value = imgdata;
  command.Parameters.Add( paramData );
  
  SqlParameter paramType = new SqlParameter( "@imgtype", SqlDbType.VarChar,50 );
  paramType.Value = imgtype;
  command.Parameters.Add( paramType );
  
  connection.Open();
  int numRowsAffected = command.ExecuteNonQuery();
  connection.Close();
  
  3、从数据库中恢复读取
  
  现在让我们来从SQL Server中读取我们放入的数据吧!我们将要输出图片到你的浏览器上,你也可以将它存放到你要的位置。
  
  private void Page_Load(object sender, System.EventArgs e)
  {
   string imgid =Request.QueryString["imgid"];
   string connstr=((NameValueCollection)
   Context.GetConfig("appSettings"))["connstr"];
   string sql="SELECT imgdata, imgtype FROM ImageStore WHERE id = " + imgid;
   SqlConnection connection = new SqlConnection(connstr);
   SqlCommand command = new SqlCommand(sql, connection);
   connection.Open();
   SqlDataReader dr = command.ExecuteReader();
   if(dr.Read())
   {
  Response.ContentType = dr["imgtype"].ToString();
  Response.BinaryWrite( (byte[]) dr["imgdata"] );
   }
   connection.Close();
  }
  
  要注意的是Response.BinaryWrite 而不是Response.Write.
  
  下面给大家一个用于C# Winform的存入、读取程序。其中不同请大家自己比较!(为了方便起见,我将数据库字段简化为二个:imgtitle和imgdata。
  
  using System;
  using System.Drawing;
  using System.Collections;
  using System.ComponentModel;
  using System.Windows.Forms;
  using System.Data;
  using System.IO;
  using System.Data.SqlClient;
  
  namespace WindowsApplication21
  {
   /// <summary>
   /// Form1 的摘要说明。
   /// </summary>
   public class Form1 : System.Windows.Forms.Form
   {
  private System.Windows.Forms.Button button1;
  /// <summary>
  /// 必需的设计器变量。
  /// </summary>
  private System.ComponentModel.Container components = null;
  private string ConnectionString = "Integrated Security=SSPI;Initial Catalog=;Data Source=localhost;";
  private SqlConnection conn = null;
  private SqlCommand cmd = null;
  private System.Windows.Forms.Button button2;
  private System.Windows.Forms.PictureBox pic1;
  

Access软件网QQ交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助