首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 存取資料庫圖像實戰(二)

     編輯:關於C語言

建構函式初始化資料連線與繫結

string sqlStr = "SELECT * FROM pub_info";
conn = new SqlConnection(connString);
adapter = new SqlDataAdapter(sqlStr, conn);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.UpdateCommand = builder.GetUpdateCommand();
dataset = new DataSet();
adapter.Fill(dataset, "pub_info");

// 將文字方塊繫結至 pr_info 欄位
textBox1.DataBindings.Add(new Binding("Text", dataset, "pub_info.pr_info"));

// 填充列表方塊顯示主鍵
for (int i = 0; i < dataset.Tables[0].Rows.Count; i++)
{
    listBox1.Items.Add(dataset.Tables[0].Rows[i][0]);
}

顯示圖片的通用方法


private void ShowImage()
{
    byte[] bytes = (byte[])dataset.Tables[0].Rows[listBox1.SelectedIndex][1];
    MemoryStream memStream = new MemoryStream(bytes);
    try
    {
        Bitmap img = new Bitmap(memStream);
        pictureBox1.Image = img;
    }
    catch
    {
        pictureBox1.Image = null; // 資料非有效圖片格式時清空
    }
}

更換圖片功能


private void buttonUpdateImage_Click(object sender, EventArgs e)
{
    OpenFileDialog dlg = new OpenFileDialog();
    dlg.ShowDialog();
    if (!string.IsNullOrWhiteSpace(dlg.FileName))
    {
        using (Stream fs = dlg.OpenFile())
        {
            byte[] bytes = new byte[fs.Length];
            fs.Read(bytes, 0, bytes.Length);
            dataset.Tables[0].Rows[listBox1.SelectedIndex][1] = bytes;
        }
        ShowImage();
    }
}

關鍵點:使用 SqlCommandBuilder 自動產生更新命令,配合 MemoryStream 將位元組陣列轉為 Bitmap 顯示,異動直接寫入 DataSet 最後統一 Update 回資料庫。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved