none
sql server 如何存图片? RRS feed

  • 问题

  • 您好,我想在想做一段小程序:

    每一个ID号对应一张图片,我选择一个ID号就显示一张图

    这里我想用上数据库,

    那么数据库里存的是图片的连接地址吗?

    还是存别的东西呢 ?

    请写一点思路给我,好吗?

    2012年1月20日 7:42

答案

  •  

    ADO.NET 二進位資料存取 (SQL Server image 型態)

    // 將檔案儲存到資料庫 image 欄位中  
    string filename = "c:\demo.jpg";   
    FileStream fs = new FileStream(filename, FileMode.Open); 
      
    // 用來儲存檔案的 byte 陣列,檔案有多大,陣列就有多大
    byte[] buffer = new byte[fs.Length];    
    fs.Read(buffer, 0, buffer.Length);   
    fs.Close();
    
    SqlConnection conn = new SqlConnection();  
    conn.ConnectionString = "";   
    SqlCommand cmd = new SqlCommand();   
    cmd.Connection = conn;   
    cmd.CommandText = "INSERT Table1(Body) VALUES(@Body)";   
    cmd.Parameters.Add("@Body", SqlDbType.Image);   
    cmd.Parameters["@Body"].Value = buffer; 
    
    conn.Open();  
    cmd.ExecuteNonQuery();   
    conn.Close();
    
    // 從資料表 image 欄位取得資料存檔  
    SqlConnection conn = new SqlConnection();   
    conn.ConnectionString = "";   
    SqlCommand cmd = new SqlCommand();   
    cmd.Connection = conn;   
    cmd.CommandText = "SELECT Body FROM Table1 WHERE FileID=1";
    
    conn.Open();  
    object obj = cmd.ExecuteScalar();   
    conn.Close();
    
    if (obj != null && obj != DBNull.Value)  
    { 
      // 用來儲存檔案的 byte 陣列,檔案有多大,陣列就有多大
      byte[] buffer = (byte[])obj;    
      FileStream fs = new FileStream("c:\new.jpg");   
      fs.Write(buffer, 0, buffer.Length);   
      fs.Close();   
    }
    

     



    2012年1月20日 7:55

全部回复

  • 您好,以下的link有範例說明,請參考,謝謝!

    Reading and Saving Images from/to a Database using C#


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2012年1月20日 7:54
  •  

    ADO.NET 二進位資料存取 (SQL Server image 型態)

    // 將檔案儲存到資料庫 image 欄位中  
    string filename = "c:\demo.jpg";   
    FileStream fs = new FileStream(filename, FileMode.Open); 
      
    // 用來儲存檔案的 byte 陣列,檔案有多大,陣列就有多大
    byte[] buffer = new byte[fs.Length];    
    fs.Read(buffer, 0, buffer.Length);   
    fs.Close();
    
    SqlConnection conn = new SqlConnection();  
    conn.ConnectionString = "";   
    SqlCommand cmd = new SqlCommand();   
    cmd.Connection = conn;   
    cmd.CommandText = "INSERT Table1(Body) VALUES(@Body)";   
    cmd.Parameters.Add("@Body", SqlDbType.Image);   
    cmd.Parameters["@Body"].Value = buffer; 
    
    conn.Open();  
    cmd.ExecuteNonQuery();   
    conn.Close();
    
    // 從資料表 image 欄位取得資料存檔  
    SqlConnection conn = new SqlConnection();   
    conn.ConnectionString = "";   
    SqlCommand cmd = new SqlCommand();   
    cmd.Connection = conn;   
    cmd.CommandText = "SELECT Body FROM Table1 WHERE FileID=1";
    
    conn.Open();  
    object obj = cmd.ExecuteScalar();   
    conn.Close();
    
    if (obj != null && obj != DBNull.Value)  
    { 
      // 用來儲存檔案的 byte 陣列,檔案有多大,陣列就有多大
      byte[] buffer = (byte[])obj;    
      FileStream fs = new FileStream("c:\new.jpg");   
      fs.Write(buffer, 0, buffer.Length);   
      fs.Close();   
    }
    

     



    2012年1月20日 7:55
  • How To Read and Write BLOB Data by Using ADO.NET with Visual C# .NET

    http://support.microsoft.com/kb/309158/en-us

    請問如何讀取sql server image型態的欄位.

    http://support.microsoft.com/kb/309158/en-us


    歡迎參觀我的Blog.NET菜鳥自救會
    2012年1月20日 8:06
  • 你可以保存图片的地址 ! 图片的大小 KB 的时 也可以保存到数据库!!!

     那个办法Shadow And Happy Code 的头像 写的代码一样!

     

     

    Final Fantasy
    2012年1月23日 9:33