知识大全 ASP.NET如何存取SQL Server数据库图片

Posted

篇首语:事亲尽教自天成,鉴本无尘水本清。相彼禽兮犹学习,灵乌反哺更分明。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET如何存取SQL Server数据库图片相关的知识,希望对你有一定的参考价值。

ASP.NET如何存取SQL Server数据库图片  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

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

   建立一个表

  在SQL SERVER中建立这样结构的一个表

 列名  类型  目的  ID  Integer  主键ID  IMGTITLE  Varchar( )  图片的标题  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  /// <summary> /// 应用程序的主入口点  /// </summary> [STAThread] static void Main()    Application Run(new Form ()); 

 private void button _Click(object sender System EventArgs e)    openFileDialog ShowDialog ();    if (openFileDialog FileName Trim()!= )     FileInfo fi = new FileInfo(openFileDialog FileName);

   string imgtitle=openFileDialog FileName;    int imgdatalen=(int)fi Length;    byte[] imgdata = new byte[imgdatalen];     Stream imgdatastream=fi OpenRead();    int n=imgdatastream Read(imgdata imgdatalen);

   if( conn State == ConnectionState Open)    conn Close();    ConnectionString = Integrated Security=SSPI; + Initial Catalog=mydb; + Data  Source=localhost; ;    conn ConnectionString = ConnectionString;

 try   string mySelectQuery = INSERT INTO ImageStore(imgtitle imgdata) VALUES (@imgtitle @imgdata ) ;  //string mySelectQuery= UPDATE ImageStore set imgtitle=@imgtitle imgdata=@imgdata ;  SqlCommand myCommand = new SqlCommand(mySelectQuery conn);

  SqlParameter paramTitle = new SqlParameter( @imgtitle SqlDbType VarChar );  paramTitle Value = imgtitle;  myCommand Parameters Add( paramTitle);

  SqlParameter paramData = new SqlParameter( @imgdata SqlDbType Image );  paramData Value = imgdata;  myCommand Parameters Add( paramData );

  conn Open();   int numRowsAffected = myCommand ExecuteNonQuery();  conn Close();  catch(Exception err)   MessageBox Show( 您输入名称可能在数据库中已存在或输入为空 请检查! +err ToString() );  finally 

 private void Form _Load(object sender System EventArgs e)  

 private void button _Click(object sender System EventArgs e)   //打开数据库连接  if( conn State == ConnectionState Open)   conn Close();  ConnectionString = Integrated Security=SSPI; + Initial Catalog=mydb; + Data Source=localhost; ;   conn ConnectionString = ConnectionString;

  // 创建数据适配器  string sql= SELECT * FROM ImageStore ;  SqlCommand mand = new SqlCommand(sql conn);   try  conn Open();  catch(Exception newerr)     MessageBox Show( 不能打开数据联接! ) ;    finally  

  SqlDataReader dr = mand ExecuteReader();  if(dr Read())     FileInfo fi = new FileInfo( temp );   FileStream myStream=fi Open(FileMode Create);    byte[] mydata=((byte[])dr[ imgdata ]);   //label Text= 您现在看到的是 + dr[ imgtitle ] ToString();    foreach(byte a in mydata)       myStream WriteByte(a);      myStream Close();  Image myImage=Image FromFile( temp ) ;  pic Image=myImage;  pic Refresh();  dr Close ();

  else    MessageBox Show( 没有成功读入数据! ) ;  

cha138/Article/program/net/201311/15629

相关参考

知识大全 基于SQL Server的Asp.net图片存储技术

基于SQLServer的Asp.net图片存储技术  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 ASP.NET中备份SQL Server数据库的方法

ASP.NET中备份SQLServer数据库的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 ASP.NET2.0数据库入门之SQL Server

ASP.NET2.0数据库入门之SQLServer  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 DELPHI存取JPEG文件到SQL Server数据库

DELPHI存取JPEG文件到SQLServer数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 ASP.NET恢复备份Sql server

ASP.NET恢复备份Sqlserver  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最近做的

知识大全 ASP.NET获取MS SQL Server安装实例

ASP.NET获取MSSQLServer安装实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Asp.net把图片存入数据库和读取图片的方法

Asp.net把图片存入数据库和读取图片的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  网

知识大全 如何在ASP.Net 中把图片存入数据库

如何在ASP.Net中把图片存入数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一介绍  

知识大全 ASP.NET中操作SQL数据库(连接字符串的配置及获取)

ASP.NET中操作SQL数据库(连接字符串的配置及获取)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 ADO.NET Entity Framework存取数据库中图片

ADO.NETEntityFramework存取数据库中图片  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看