保存图片到SQL Server

  1using System;
  2using System.Collections;
  3using System.ComponentModel;
  4using System.Data;
  5using System.Drawing;
  6using System.Web;
  7using System.Web.SessionState;
  8using System.Web.UI;
  9using System.Web.UI.WebControls;
 10using System.Web.UI.HtmlControls;
 11using System.Data.SqlClient;
 12using System.IO;
 13
 14namespace MyTest
 15{
 16    /// <summary>
 17    /// WebForm1 的摘要说明。
 18    /// </summary>

 19    public class WebForm1 : System.Web.UI.Page
 20    {
 21        protected System.Web.UI.WebControls.TextBox TextBox1;
 22        protected System.Web.UI.WebControls.Button SubmitButton;
 23        protected System.Web.UI.HtmlControls.HtmlInputFile UP_FILE;
 24        protected System.Web.UI.WebControls.Button butDisplay;
 25        protected System.Web.UI.WebControls.TextBox txtPicID;
 26        protected System.Web.UI.WebControls.Label lblMessage;
 27        string ConnStr = "server=localhost;uid=sa;pwd=;database=MyTest";
 28    
 29    
 30        private void Page_Load(object sender, System.EventArgs e)
 31        {
 32            
 33        }

 34
 35        Web 窗体设计器生成的代码
 57
 58        //存入数据库
 59        private void SubmitButton_Click(object sender, System.EventArgs e)
 60        {
 61            //HttpPostedFile对象,用于读取图像文件属性
 62            HttpPostedFile UpFile = UP_FILE.PostedFile;
 63            //FileLength变量存储图片的字节大小
 64            int FileLength = UpFile.ContentLength;
 65
 66            try
 67            {
 68                if(FileLength == 0)
 69                {
 70                    this.lblMessage.Text = "您未选择上传的文件";
 71                }

 72                else
 73                {
 74                    //创建存储图片文件的临时Byte数组
 75                    byte[] FileByleArray = new byte[FileLength];
 76                    //建立数据流对象
 77                    Stream streamObject = UpFile.InputStream;
 78                    //读取图像文件数据
 79                    //FileByleArray为数据储存体,0为数据指针位置、FileLength为数据长度
 80                    streamObject.Read(FileByleArray,0,FileLength);
 81                    //数据库操作                    
 82                    string query = "INSERT INTO Picture(PicData,PicType,PicDescription,PicSize) VALUES (@PicData,@PicType,@PicDescription,@PicSize)";
 83                    SqlCommand com = new SqlCommand(query,new SqlConnection(ConnStr));
 84
 85                    //添加各项参数并赋值
 86                    com.Parameters.Add("@PicData",SqlDbType.Image);
 87                    com.Parameters.Add("@PicType",SqlDbType.VarChar,50);
 88                    com.Parameters.Add("@PicDescription",SqlDbType.VarChar,200);
 89                    com.Parameters.Add("@PicSize",SqlDbType.BigInt);
 90                    com.Parameters["@PicData"].Value = FileByleArray;
 91                    com.Parameters["@PicType"].Value = UpFile.ContentType;
 92                    com.Parameters["@PicDescription"].Value = this.TextBox1.Text;
 93                    com.Parameters["@PicSize"].Value = FileLength;
 94
 95                    //执行数据库操作
 96                    com.Connection.Open();
 97                    com.ExecuteNonQuery();
 98                    com.Connection.Close();
 99                    //提示上传成功
100                    this.lblMessage.Text = "上传成功!";
101                }

102            }

103            catch(Exception er)
104            {
105                this.lblMessage.Text = er.Message.ToString();
106            }

107        }

108
109        //读出图片并显示
110        private void butDisplay_Click(object sender, System.EventArgs e)
111        {
112            //获取输入的图片ID
113            int ImgID = int.Parse(this.txtPicID.Text);
114            //创建数据库连接字符串和SQL语句
115            string query = "SELECT * FROM Picture WHERE ID=@ImgID";
116            //创建SqlCommand对象并对参数进行初始化赋值
117            SqlCommand com = new SqlCommand(query,new SqlConnection(ConnStr));
118            com.Parameters.Add("@ImgID",SqlDbType.BigInt);
119            com.Parameters["@ImgID"].Value = ImgID;
120            //打开数据库连接
121            com.Connection.Open();
122            SqlDataReader dr = com.ExecuteReader();
123
124            if(dr.Read())
125            {
126                Response.ContentType = dr["PicType"].ToString();
127                Response.OutputStream.Write((byte[])dr["PicData"],0,int.Parse(dr["PicSize"].ToString())+50000);
128            }

129            else
130            {
131                this.lblMessage.Text = "没有这个图片的ID号";
132                Response.End();
133            }

134
135            //关闭SqlDataReader对象和数据库连接
136            dr.Close();
137            com.Connection.Close();
138            
139        }

140
141        
142    }

143}

144
posted @ 2006-07-12 17:38  Ricebug  阅读(1308)  评论(0编辑  收藏  举报