当前位置:文档之家› 存储图片到SQLSERVER大数据库中

存储图片到SQLSERVER大数据库中

实用标准文档如何存储图片到SQL SERVER数据库中SQL Server提供了一个特别的数据类型:image,它是一个包含binary数据的类型。

下边这个例子就向你展示了如何将文本或照片放入到数据库中的办法。

在这篇文章中我们要看到如何在SQL Server中存储和读取图片。

1、建立一个表:在SQL SERVER中建立这样结构的一个表:列名类型目的ID Integer主键IDIMGTITLEVarchar(50)图片的标题IMGTYPEVarchar(50)图片类型. 要以辨认的类型IMGDATA Image用于存储二进制数据2、存储图片到SQL SERVER数据库中为了能存储到表中,你首先要上传它们到你的WEB服务器上,你可以开发一个webform,它用来将客户端中TextBoxwebcontrol中的图片入到你的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);stringconnstr=((NameValueCollection)Context.GetConfig("appSettings"))["connstr"];S qlConnection 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、从数据库中恢复读取现在让我们来从SQLServer中读取我们放入的数据吧!我们将要输出图片到你的浏览器上,你也可以将它存放到你要的位置。

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 ponentModel;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 ponentModel.Container components = null;privatestringConnectionString="IntegratedSecurity=SSPI;InitialCatalog=;DataSou rce=localhost;";private SqlConnection conn = null;private SqlCommand cmd = null;private System.Windows.Forms.Button button2;private System.Windows.Forms.PictureBox pic1;private System.Windows.Forms.OpenFileDialog openFileDialog1;private string sql = null;private bel label2;private string nowId=null;public Form1(){//// Windows窗体设计器支持所必需的//InitializeComponent();conn = new SqlConnection(ConnectionString);//// TODO:在InitializeComponent调用后添加任何构造函数代码//}///清理所有正在使用的资源。

///</summary>protected override void Dispose( bool disposing ) {if (conn.State == ConnectionState.Open)文案大全实用标准文档}conn.Close();if( disposing ){if (components != null){components.Dispose();}}base.Dispose( disposing );#region Windows Form Designer generated code///<summary>///设计器支持所需的方法-不要使用代码编辑器修改///此方法的内容。

private void InitializeComponent(){this.button1 = new System.Windows.Forms.Button();this.pic1 = new System.Windows.Forms.PictureBox();this.button2 = new System.Windows.Forms.Button();this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();bel2 = new bel();this.SuspendLayout();//// button1//this.button1.Location = new System.Drawing.Point(0, 40); = "button1";this.button1.Size = new System.Drawing.Size(264, 48);this.button1.TabIndex = 0;this.button1.Text = "加入新的图片";this.button1.Click += new System.EventHandler(this.button1_Click);//// pic1//this.pic1.Location = new System.Drawing.Point(280, 8); = "pic1";this.pic1.Size = new System.Drawing.Size(344, 264);this.pic1.TabIndex = 3;this.pic1.TabStop = false;//// button2文案大全实用标准文档//this.button2.Location = new System.Drawing.Point(0, 104); = "button2";this.button2.Size = new System.Drawing.Size(264, 40);this.button2.TabIndex = 4;this.button2.Text = "从数据库中恢复图像";this.button2.Click += new System.EventHandler(this.button2_Click);// // openFileDialog1//this.openFileDialog1.Filter="\"图像(*.jpg,*.bmp,*.gif)|*.jpg|*.bmp|*.gif\"";//// label2//bel2.Location = new System.Drawing.Point(0, 152); = "label2";bel2.Size = new System.Drawing.Size(264, 48);bel2.TabIndex = 5;//// Form1//this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); this.ClientSize = new System.Drawing.Size(632, 273);this.Controls.AddRange(new System.Windows.Forms.Control[] { bel2,this.button2,this.pic1,this.button1}); = "Form1";this.Text = "Form1";this.Load += new System.EventHandler(this.Form1_Load); this.ResumeLayout(false);}#endregion///<summary>///应用程序的主入口点。

相关主题