SQLServer將圖片存入數(shù)據(jù)庫代碼

字號:

存入數(shù)據(jù)庫的代碼:
    // 把圖片轉(zhuǎn)換成byte[]
    MemoryStream ms=new MemoryStream();
    byte[] imagedata=null;
    Image.FromFile("c:\\a.gif").Save(ms,System.Drawing.Imaging.ImageFormat.Gif );
    imagedata=ms.GetBuffer ();
    // 生成Sql
    string sql ="Insert Into 你的表名 (Image字段) values(@filedata)";
    SqlParameter p=new SqlParameter("@filedata",SqlDbType.Image);
    p.value=imagedata;
    // 執(zhí)行Sql
    private void button2_Click(object sender, System.EventArgs e)
    {
    try
    {
    System.IO.FileInfo fs = new System.IO.FileInfo(this.filename);
    if (!fs.Exists)
    {
    MessageBox.Show("無效的文件名!");
    return;
    }
    //創(chuàng)建一字節(jié)數(shù)組,用來存儲圖像文件.(數(shù)組的長度是圖像文件的長度)
    byte[] Content=new byte[fs.Length];
    //打開文件并用他初始化一個文件流對象
    FileStream ImageFileStream=fs.OpenRead();
    //將文件內(nèi)容寫入字節(jié)數(shù)組
    ImageFileStream.Read(Content,0,Content.Length);
    //關(guān)閉文件流
    ImageFileStream.Close();
    //創(chuàng)建一個Sql命令對象,用來插入記錄
    System.Data.OleDb.OleDbCommand mycmd = new System.Data.OleDb.OleDbCommand(updatesql,DB.OleConn());
    mycmd.CommandType = CommandType.StoredProcedure;
    mycmd.Parameters.Add("@image",System.Data.OleDb.OleDbType.VarBinary);
    mycmd.Parameters.Add("@bh",OleDbType.VarChar,20);
    mycmd.Parameters["@image"].Value = Content;
    mycmd.Parameters["@bh"].Value =bh;
    //打開數(shù)據(jù)庫連接
    if (mycmd.Connection.State!=ConnectionState.Open)
    {
    mycmd.Connection.Open();
    }
    //執(zhí)行 Sql 語句
    mycmd.ExecuteNonQuery();
    //關(guān)閉數(shù)據(jù)庫連接
    mycmd.Connection.Close();
    MessageBox.Show("圖像文件 " + fs.FullName + " 成功上傳到數(shù)據(jù)庫!");
    this.filename ="";
    myds.Tables[0].Clear();
    myda.Fill(myds,"A");
    //mybind.Position =0;
    //this.Showimage();
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    this.button2.Enabled = false;
    }
    byte[] buffer;
    // 1)考試,大提示磁盤文件中加載文件
    System.IO.FileStream fs = new System.IO.FileStream("文件名", System.IO.FileMode.Open);
    buffer = new byte[fs.Length];
    fs.Read(buffer, 0, buffer.Length);
    // 2)從表單讀取上傳的文件 File1 為文件上傳的 HTML 控件
    System.IO.Stream stream = this.File1.PostedFile.InputStream;
    buffer = new byte[stream.Length];
    stream.Read(buffer, 0, buffer.Length);
    // 請任選以上一種獲取圖片數(shù)據(jù)
    // 寫入數(shù)據(jù)庫
    System.Data.OleDb.OleDbParameter parameter = new System.Data.OleDb.OleDbParameter("@Image", System.Data.OleDb.OleDbType.Binary);
    parameter.Value = buffer;
    string insertCommand = "INSERT [表](字段) VALUES(@Image);";
    System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(insertCommand, conn);
    cmd.Parameters.Add(parameter);
    cmd.ExecuteNonQuery();
    // 讀取圖片的代碼,我就不寫,忙沒時間。其實(shí)很簡單就是查詢一下而已。
    // 讀取圖片時,從數(shù)據(jù)庫中把二進(jìn)制數(shù)據(jù)賦值到 byte[] 數(shù)組中
    this.Response.ContentType = "image/JPEG"; // 設(shè)置 MIME 類型
    this.Response.BinaryWrite(buffer); // 輸出二進(jìn)制數(shù)據(jù)
    簡潔有效的方法:頂頂,狂頂??!
    create table qqview(photo image)--建表
    go
    insert qqview
    select * from openrowset(bulk N’d:\壁紙\10.jpg’,single_blob) a --N’d:\壁紙\1.jpg’為路徑和圖片名。