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

 我来答
黑科技1718
2022-11-22 · TA获得超过5831个赞
知道小有建树答主
回答量:433
采纳率:97%
帮助的人:80万
展开全部

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

    列名  类型  目的  ID  Integer  主键ID  IMGTITLE  Varchar( )  图片的标题  IMGTYPE  Varchar( )  图片类型  ASP NET要以辨认的类型 IMGDATA  Image  用于存储二进制数据               IMGTYPE Varchar( )    图片类型 ASP NET要以辨认的类型 IMGDATA Image 用于存储二进制数据

   存储图片到SQL SERVER数据库中   为了能存储到表中 你首先要上传它们到你的WEB 服务器上 你可以开发一个web form 它用来将客户端中TextBox web control中的图片入到你的WEB服务器上来 将你的 encType 属性设置为 myltipart/formdata     Stream imgdatastream = File PostedFile InputStream;  int imgdatalen = File PostedFile ContentLength;  string imgtype = File PostedFile ContentType;  string imgtitle = TextBox Text;  byte[] imgdata = new byte[imgdatalen];  int n = imgdatastream Read(imgdata imgdatalen);  string connstr=((NameValueCollection)Context GetConfig( appSettings ))[ connstr ];    SqlConnection connection = new SqlConnection(connstr);    SqlCommand mand = new SqlCommand         ( INSERT INTO ImageStore(imgtitle imgtype imgdata)         VALUES ( @imgtitle @imgtype @imgdata ) connection );    SqlParameter paramTitle = new SqlParameter         ( @imgtitle SqlDbType VarChar );    paramTitle Value = imgtitle;  mand Parameters Add( paramTitle);    SqlParameter paramData = new SqlParameter( @imgdata SqlDbType Image );  paramData Value = imgdata;  mand Parameters Add( paramData );    SqlParameter paramType = new SqlParameter( @imgtype SqlDbType VarChar );  paramType Value = imgtype;  mand Parameters Add( paramType );    connection Open();  int numRowsAffected = mand ExecuteNonQuery();  connection Close();    从数据库中恢复读取     现在让我们来从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 mand = new SqlCommand(sql connection);   connection Open();   SqlDataReader dr = mand 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 WindowsApplication   {   /// <summary>   /// Form 的摘要说明    /// </summary>   public class Form : System Windows Forms Form   {  private System Windows Forms Button button ;  /// <summary>  /// 必需的设计器变量   /// </summary>  private System ComponentModel Container ponents = 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 button ;  private System Windows Forms PictureBox pic ;  private System Windows Forms OpenFileDialog openFileDialog ;  private string sql = null;  private System Windows Forms Label label ;  private string nowId=null;     public Form ()   {  //  // Windows 窗体设计器支持所必需的  //  InitializeComponent();  conn = new SqlConnection(ConnectionString);     //  // TODO: 在 InitializeComponent 调用后添加任何构造函数代码  //   }     /// <summary>   /// 清理所有正在使用的资源    /// </summary>   protected override void Dispose( bool disposing )   {  if (conn State == ConnectionState Open)   conn Close();  if( disposing )  {   if (ponents != null)    {    ponents Dispose();   }  }  base Dispose( disposing );     }     #region Windows Form Designer generated code   /// <summary>   /// 设计器支持所需的方法 不要使用代码编辑器修改   /// 此方法的内容    /// </summary>   private void InitializeComponent()   {  this button = new System Windows Forms Button();  this pic = new System Windows Forms PictureBox();  this button = new System Windows Forms Button();  this openFileDialog = new System Windows Forms OpenFileDialog();  this label = new System Windows Forms Label();  this SuspendLayout();  //   // button   //   this button Location = new System Drawing Point( );  this button Name = button ;  this button Size = new System Drawing Size( );  this button TabIndex = ;  this button Text = 加入新的图片 ;  this button Click += new System EventHandler(this button _Click);  //   // pic   //   this pic Location = new System Drawing Point( );  this pic Name = pic ;  this pic Size = new System Drawing Size( );  this pic TabIndex = ;  this pic TabStop = false;  //   // button   //   this button Location = new System Drawing Point( );  this button Name = button ;  this button Size = new System Drawing Size( );  this button TabIndex = ;  this button Text = 从数据库中恢复图像 ;  this button Click += new System EventHandler(this button _Click);  //   // openFileDialog   //   this openFileDialog Filter = 图像文件(* jpg * bmp * gif)|* jpg|* bmp|* gif ;  //   // label   //   this label Location = new System Drawing Point( );  this label Name = label ;  this label Size = new System Drawing Size( );  this label TabIndex = ;  //   // Form   //   this AutoScaleBaseSize = new System Drawing Size( );  this ClientSize = new System Drawing Size( );  this Controls AddRange(new System Windows Forms Control[] {    this label     this button     this pic     this button });  this Name = Form ;  this Text = Form ;  this Load += new System EventHandler(this Form _Load);  this ResumeLayout(false);     }   #endregion

lishixinzhi/Article/program/net/201311/11512

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式