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;
intimgdatalen
= File1.PostedFile.ContentLength;
string imgtype = File1.PostedFile.ContentType;
string imgtitle = 11mg imgtitle;
= new byte[imgdatalen];
int n = imgdatastream.Read(imgdata,0,imgdatalen);
string connstr=((NameValueCollection)Context.GetConfig("appSettings"))["connstr"];
SqlConnection connConnectionnection = new SlConnection(connstr. );
SqlCommand command = new SqlCommand
("INSERT INTO ImageStore(imgtitle,imgtype,imgdata)
VALUES ( @imgtitle, @imgtype,@imgdata )", connection );
SqlParameter paramTitle = new SqlParameter
("nection )。 50 );
paramTitle.Value
= imgtitle;
command.Parameters.Add(
paramTitle);
SqlParameter paramData = new SqlParameter( "@imgdata", SqlDbType.Image );
paramData。 ?
();
3、從資料庫中恢復讀取
現在讓我們來從SQL Server中讀取我們放入的資料吧!我們將要輸出圖片到你的瀏覽器上,你也可以將它存放到你要的位置。
private void Page_Load(objectsender
, System.EventArgs e)
{
string imgid =Request.QueryString["imgid"];
string connstr=((NameValueCollection)
Context.GetConfig("appSettings"))["connstr"];
"SELECT imgdata, imgtype FROM ImageStore WHERE id = " + imgid;
SqlConnection connection=
new SqlConnection(connstr);
SqlCommand command = new SqlCommand(sql,connection);
connection.Open();
SqlDataReader dr = mand;
(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
{
///
///
Form1
的摘要說明。
.Forms.Button button1;
///
///
必要
的
設計器變數。
;
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
System.Windows.Forms.Label label2;
private string nowId=null;
public Form1()
{
//
// Windows 窗體設計器支援所必需的
//
InitializeComponent();
conn = new SqlConnection(Connection);
//
/ / TODO: 在InitializeComponent 呼叫後新增任何建構函式程式碼
//
}
///
/// 清理所有正在使用的資源。
///
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
///
/// 設計器支援所需的方法- 不要使用程式碼編輯器修改
/// 此方法的內容。
///
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();
this.label2 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// button1
//
this.button1 .Location = new System.Drawing.Point(0, 40);
this.button1.Name = "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);
this.pic1.Name = "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);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(264, 40);
this.button2.TabIndex = 4;
this.button2.Text = "從資料庫還原圖片";
this.button2.Click += new Systemthis.EventHandler(this.button2_Click);
//
// openFileDialog1
// this.EventHandler(this.button2_Click); // // openFileDialog1 // this.EventHandler(this.button2_Click); // // openFileDialog1//
this
..openFileDialog1.Filter = ""圖片檔(*.jpg,*.bmp,*.gif)|*.jpg|*.bmp|*.gif"";
//
// label2
//
this.label2.Location = new System.Drawing.Point(0, 152);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(264, 48);
this.label2.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[] {
this.label2,
this.button2,
this.pic1,
this.button1});
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this. Form1_Load);
this.ResumeLayout(false);
}
#endregion
///
/// 應用程式的主入口點。
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void button1_Click(object sender, System.EventArgs e)