//首先是如何把圖片和圖片的路徑存到資料庫

//呼叫ReadFile函式
byte[] imageData = ReadFile(放圖片的路徑字串);


//用的是本機的Window驗證
SqlConnection connect = new SqlConnection("Data Source=(local);Initial Catalog=放起始的資料庫是哪個; Integrated Security=True");

SqlCommand command = new SqlCommand("INSERT INTO dbo.MyTable(id,picture,picturepath) VALUES (1,@imageData,@imagePath)",connect);

//imageData是上面那個byte[] imageData
//textBox.text放的是圖片路徑

command.Parameters.Add(new SqlParameter("@imageData", (object)imageData));
command.Parameters.Add(new SqlParameter("@imagePath", (object)textBox.Text));

connect.Open();

command.ExecuteNonQuery();

connect.Close();

MessageBox.Show("圖片新增完成");


public byte[] ReadFile(string path)
{

byte[] data = null;

FileInfo fInfo = new FileInfo(path);

long length = fInfo.Length;

FileStream fStream = new FileStream(path, FileMode.Open, FileAccess.Read);

BinaryReader br = new BinaryReader(fStream);

data = br.ReadBytes((int)length);

return data;

}



//取出圖片用路徑方式

SqlConnection connect = new SqlConnection("Data Source=(local);Initial Catalog=MyDB;Integrated Security=True");

SqlCommand command = new SqlCommand("SELECT picturepath FROM dbo.MyTable", connect);

connect.Open();

SqlDataReader dr = command.ExecuteReader();

//dr.Read()是開始讀進第一筆資料與持續讀到底

while (dr.Read())
{
string picturepath = dr[0].ToString();

byte[] imageData = ReadFile(picturepath);

using (MemoryStream ms = new MemoryStream(imageData))
{
pictureBox1.Image = Image.FromStream(ms);
MessageBox.Show("顯示成功");
}

}
connect.Close();



//取出圖片從資料庫方式

SqlConnection connect = new SqlConnection("Data Source=(local);Initial Catalog=MyDB;Integrated Security=True");

SqlCommand command = new SqlCommand("SELECT picture FROM dbo.MyTable", connect);

connect.Open();

SqlDataReader dr = command.ExecuteReader();

if (dr.Read())
{
//Get image data from gridview column.
//(這兩行註解留著或許以後會用到)
//byte[] imageData = (byte[])gridView2.GetDataRow(e.RowIndex)["picture"];
//byte[] imageData = (byte[])gridView2.Rows[e.RowIndex].Cells["picture"].Value;

byte[] imageData=(byte[])dr["picture"];

using (MemoryStream ms = new MemoryStream(imageData, 0, imageData.Length))
{
//這行註解留著或許以後會用到
//ms.Write(imageData, 0, imageData.Length);

pictureBox1.Image = Image.FromStream(ms);
}

connect.Close();
MessageBox.Show("顯示成功");
}

welkingunther 發表在 痞客邦 PIXNET 留言(2) 人氣()


留言列表 (2)

發表留言
  • 乾屍-半半
  • welkingunther大大你好..
    最近在學怎麼把圖片放到sql server
    但是每次到

    connect.Open();


    的時候就會出現以下錯誤:
    建立連接至 SQL Server 時,發生網路相關或執行個體特定的錯誤。找不到或無法存取伺服器。確認執行個名稱是否正確,以及 SQL Server 是否設定為允許遠端連線。 (provider: 具名的管線提供者, error: 40 - 無法開啟至 SQL Server 的連接)

    但是在使用visualC#的時候,已經將資料連上了,怎麼還會無法開啟sqlserver連接呢?

    麻煩請大大幫我看看好嗎~"~
  • welkingunther
  • 看起來應該是ConnectionString的問題,
    雖然從Visual Studio可以連到SQLServer,
    但程式沒辦法連到你的SQL
    去調整SqlConnection 裡面的參數試試吧(下面那段雙引號裡面就是)
    SqlConnection connect = new SqlConnection("Data Source=(local);Initial Catalog=MyDB;Integrated Security=True");

    調整方法則是去Google打上關鍵字SqlConnection
    就會有資料可以參考了~^^