我在数据库中某表的一个字段productPhoto类型为Image(16),请问给如何对其进行存取?最好能用C#写出代码,在线等,谢谢!

解决方案 »

  1.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=ECD9AE16-8FF0-4A1C-9B9F-5E8B641CB1B1
    http://dotnet.aspx.cc/ShowDetail.aspx?id=2A5DD7C6-A45A-48AB-A2E8-342A29F17506
      

  2.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    using System.IO;
    using System.Configuration;namespace UploadImageToSqlserver
    {
    /// <summary>
    ///上传图片到数据库存储
    /// </summary>
    public class UploadImage : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Button Button1;
    protected System.Web.UI.WebControls.Label lblMessage;
    protected System.Web.UI.WebControls.TextBox txtDescription;
    protected System.Web.UI.HtmlControls.HtmlInputFile UP_File;
    protected System.Web.UI.WebControls.LinkButton LinkButton1;
    protected Int32 FileLength = 0;

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Button1.Click += new System.EventHandler(this.Button1_Click);
    this.LinkButton1.Click += new System.EventHandler(this.LinkButton1_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void Button1_Click(object sender, System.EventArgs e)
    {
    HttpPostedFile UpFile = UP_File.PostedFile;//HttpPostedFile对象,用于读取图象文件属性
    FileLength = UpFile.ContentLength;
    try
    {
    if(FileLength == 0)
    {
    lblMessage.Text = "<b>请选择您要上传的文件</b>";
    }
    else
    {
    Byte[] FileByteArray = new byte[FileLength]; //图象文件临时储存Byte数组
    Stream StreamObj = UpFile.InputStream;//建立数据流对像
    //读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
    StreamObj.Read(FileByteArray,0,FileLength);

    SqlConnection  Con  =  new  SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]); 
    String  SqlCmd  =  "INSERT  INTO  ImageStore  (ImageData,  ImageContentType,  ImageDescription,  ImageSize)  VALUES  (@Image,  @ContentType,  @ImageDescription,  @ImageSize)";  
    SqlCommand  CmdObj  =  new  SqlCommand(SqlCmd,  Con);  
    CmdObj.Parameters.Add("@Image",SqlDbType.Binary,  FileLength).Value  =  FileByteArray;  
    CmdObj.Parameters.Add("@ContentType",  SqlDbType.VarChar,50).Value  =  UpFile.ContentType;//记录文件类型  
    //把其它单表数据记录上传  
    CmdObj.Parameters.Add("@ImageDescription",  SqlDbType.VarChar,200).Value  =  txtDescription.Text;  
    //记录文件长度,读取时使用  
    CmdObj.Parameters.Add("@ImageSize",  SqlDbType.BigInt,8).Value  =  UpFile.ContentLength;  
    Con.Open();  
    CmdObj.ExecuteNonQuery();  
    Con.Close();
    lblMessage.Text  =  "<p><b>OK!你已经成功上传你的图片</b>";//提示上传成功 }
    }
    catch(Exception ex)
    {
    lblMessage.Text = ex.Message.ToString();
    } } private void LinkButton1_Click(object sender, System.EventArgs e)
    {
    Response.Redirect("ViewImage.aspx");
    }
    }
    }using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.IO;
    using System.Drawing;namespace UploadImageToSqlserver
    {
    /// <summary>
    /// 从数据库中取出图片并显示在网页中。
    /// </summary>
    public class ViewImage : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.DropDownList DdlImageId;

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    //建立数据库链接
    if(!IsPostBack)
    {
    BindDropDownList();
    }

    }
    private void BindDropDownList()
    {
    SqlConnection  Con  =  new  SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
    String  SqlCmd  =  "SELECT  ImageID  FROM  ImageStore";  
    SqlDataAdapter  CmdObj  =  new  SqlDataAdapter(SqlCmd,  Con);
    DataSet ds = new DataSet();
    CmdObj.Fill(ds,"ImageId"); DdlImageId.DataSource = ds.Tables["ImageId"].DefaultView;
    DdlImageId.DataTextField = "ImageID";
    DdlImageId.DataValueField = "ImageID";
    DdlImageId.DataBind();
    DdlImageId.Items.Insert(0, "请选择");
    DdlImageId.SelectedIndex = 0; Con.Close(); 
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.DdlImageId.SelectedIndexChanged += new System.EventHandler(this.DdlImageId_SelectedIndexChanged);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion protected void DdlImageId_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    int  ImgID  =  Convert.ToInt32(DdlImageId.SelectedValue);
    SqlConnection  Con  =  new  SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);  
    String  SqlCmd  =  "SELECT  *  FROM  ImageStore  WHERE  ImageID  =  @ImageID";  
    SqlCommand  CmdObj  =  new  SqlCommand(SqlCmd,  Con);  
    CmdObj.Parameters.Add("@ImageID",  SqlDbType.Int).Value  =  ImgID;  
    Con.Open();  
    SqlDataReader  SqlReader  =  CmdObj.ExecuteReader();  
    SqlReader.Read(); 
    Response.ContentType  =  (string)SqlReader["ImageContentType"];//设定输出文件类型  
    //输出图象文件二进制数制  
    Response.OutputStream.Write((byte[])SqlReader["ImageData"],  0,  (int)SqlReader["ImageSize"]);
    Response.BufferOutput = true;  
    Con.Close();
       }
    }
    }