日期:2014-05-18  浏览次数:20436 次

存放图片路径到ACCESS数据库并读取显示
RT, 本人初学ASP.NET,想做一个这样的例子。希望网友给我实现这个功能的重要的步骤或者完整的一个代码例子!(就是如何保存图片路径到ACCESS数据库,又如何读取出来显示)

------解决方案--------------------
这里用的是Mysql数据库 数据字段是Blob,如果是ACCESS就用“OLE 对象”字段,sql是IMAGE字段
还有 你把MySqlConnection该成OleDBConnection(ACCESS)或SqlConnection(SQL数据库)
依次类推,把 MySqlCommand 改成OleDBCommand 等等 ....知道了吧
C# code

using System; 
using System.Data; 
using System.Configuration; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 
using System.Data.SqlClient; 
using System.IO; 
using System.Drawing.Imaging; 
using MySql.Data.MySqlClient;//引用MYSQL命名空间 
public partial class _Default : System.Web.UI.Page 
{ 
      MySqlConnection conn = new MySqlConnection(System.Configuration.ConfigurationManager.AppSettings["conmy"]); 
    protected void Page_Load(object sender, EventArgs e) 
    { 
        if (!this.Page.IsPostBack) 
        { 
            this.show(); 
        } 
    } 
     
    protected void Button1_Click(object sender, EventArgs e) 
    { 
        if (FileUpload1.HasFile) 
        { 
            //文件扩展名 
            string Ex=FileUpload1.FileName.Substring(FileUpload1.FileName.LastIndexOf('.') + 1); 
            if (Ex.ToLower() == "jpg" || Ex.ToLower() == "gif") 
            { 
                int ImageSize = FileUpload1.PostedFile.ContentLength;//图片的大小 
                string ImageType = this.FileUpload1.PostedFile.ContentType;//图片类型 
                Stream ImageStream = this.FileUpload1.PostedFile.InputStream; 
                Byte[] ImageCount = new Byte[ImageSize];//调用方法转化二进制数据 
                int bt = ImageStream.Read(ImageCount, 0, ImageSize); 
           
                MySqlCommand comm = new MySqlCommand("testpic",conn); 
                comm.CommandType = CommandType.StoredProcedure; 
                MySqlParameter pj = new MySqlParameter("?myimage", MySqlDbType.LongBlob,ImageCount.Length);//图片 
                pj.Value =ImageCount;//给这字段赋值二进制数据 
                comm.Parameters.Add(pj); 
                MySqlParameter pname = new MySqlParameter("?imagename", MySqlDbType.VarChar, 100);//图片名称 
                pname.Value=FileUpload1.FileName; 
                comm.Parameters.Add(pname); 
                MySqlParameter psize = new MySqlParameter("?imagesize", MySqlDbType.Int32);//图片名称 
                psize.Value =ImageSize; 
                comm.Parameters.Add(psize); 
                conn.Open(); 
                comm.ExecuteNonQuery(); 
                conn.Close(); 
       
              this.Label1.Text="插入成功!"; 
              this.show();         
               
            } 
            else 
            { 
                this.Label1.Text = "格式不正确!!!"; 
            } 
            } 
        else 
        { 
            this.Label1.Text = "没有文件!!!"; 
        } 
    } 
    private byte[] ImageToByte(string path)//声名一个把图片转化到二进制数据的方法 
    { 
        FileStream buffer = new FileStream(path, FileMode.Open, FileAccess.Read); 
        BinaryReader br = new BinaryReader(buffer); 
        byte[] image = br.ReadBytes((int)buffer.Length); 
        return image; 
    } 
    private void show() 
    { 
        MySqlDataAdapter da = new MySqlDataAdapter("select * from imgpic", conn); 
        DataSet ds = new DataSet(); 
        da.Fill(ds, "a"); 
        this.GridView1.DataSource = ds.Tables["a"].DefaultView; 
        this.GridView1.DataKeyNames = new string[] { "id" }; 
        this.GridView1.DataBind(); 
    } 
      protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e) 
    { 
        string sid = this.GridView1.DataKeys[e.NewSelectedIndex].Value.ToString(); 
        Session["id"] = sid; 
        this.Label1.Text = sid