C# 读写ACCESS的OLE对象,演示图片与长文件的读写
網絡上的讀寫OLE對象的代碼是多,不過多是轉載的,大部分人從來都沒實際測試過,只是COPY來COPY去。我重來沒看到一個真正可以運行的東東。
沒辦法,只有自力更生,花了一點時間出了點研究成果,寫到這里做個記錄。
關鍵代碼如下:
******* void button1_Click(object sender, EventArgs e)? //寫入圖片
??????? {
????????????OpenFileDialog dlg = new OpenFileDialog();
??????????? dlg.Filter = "All?? Files|*.*";
??????????? if (dlg.ShowDialog() == DialogResult.OK)
??????????? {
??????????????? string fileName = dlg.FileName;
??????????????? FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
??????????????? byte[] buffer = new byte[fs.Length];
??????????????? fs.Read(buffer, 0, buffer.Length);
??????????????? fs.Close();
??????????????? //pictureBox1.Image = Image.FromFile(fileName);
??????????????? OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\db1.mdb" + ";Persist Security Info=True");
??????????????? cn.Open();
??????????????? OleDbCommand cmd = new OleDbCommand("INSERT INTO? list1(pic)? VALUES(@img)", cn);
??????????????? ((OleDbParameter)cmd.Parameters.Add("@img", OleDbType.Binary)).Value = buffer;
??????????????? cmd.ExecuteNonQuery();
??????????? }??
?
??????????
??? }
??????? ******* void button2_Click(object sender, EventArgs e)? //讀取圖片
??????? {
??????????? OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\db1.mdb" + ";Persist Security Info=True");
??????????? cn.Open();
??????????? OleDbDataAdapter oda = new OleDbDataAdapter("select? pic? from? list1 where 編號=10", cn);
???????????
??????????? DataTable dt = new DataTable();
??????????? oda.Fill(dt);
??????????? cn.Close();
??????????? byte[] buffer = dt.Rows[0][0] as byte[];
??????????? MemoryStream ms = new MemoryStream(buffer);
??????????? pictureBox1.Image = Image.FromStream(ms);
??????? }
??????? ******* void button3_Click(object sender, EventArgs e)? //寫入長文本
??????? {
??????????? OpenFileDialog dlg = new OpenFileDialog();
??????????? dlg.Filter = "TXT Files|*.txt";
??????????? if (dlg.ShowDialog() == DialogResult.OK)
??????????? {
??????????????? string fileName = dlg.FileName;
??????????????? FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
??????????????? byte[] buffer = new byte[fs.Length];
??????????????? fs.Read(buffer, 0, buffer.Length);
??????????????? fs.Close();
??????????????? //pictureBox1.Image = Image.FromFile(fileName);
??????????????? OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\db1.mdb" + ";Persist Security Info=True");
??????????????? cn.Open();
??????????????? OleDbCommand cmd = new OleDbCommand("INSERT INTO? list1(pic)? VALUES(@img)", cn);
??????????????? ((OleDbParameter)cmd.Parameters.Add("@img", OleDbType.Binary)).Value = buffer;
??????????????? cmd.ExecuteNonQuery();
??????????? }??
??????? }
??????? ******* void button4_Click(object sender, EventArgs e)? //載入長文本
??????? {
??????????? OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\db1.mdb" + ";Persist Security Info=True");
??????????? cn.Open();
??????????? OleDbDataAdapter oda = new OleDbDataAdapter("select? pic? from? list1 where 編號=12", cn);
??????????? DataTable dt = new DataTable();
??????????? oda.Fill(dt);
??????????? cn.Close();
??????????? byte[] buffer = dt.Rows[0][0] as byte[];
??????????? //MemoryStream ms = new MemoryStream(buffer);
??????????? richTextBox1.Text =System.Text.Encoding.Default.GetString(buffer);
??????? }
轉載于:https://www.cnblogs.com/hackpig/archive/2010/02/15/1668441.html
總結
以上是生活随笔為你收集整理的C# 读写ACCESS的OLE对象,演示图片与长文件的读写的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 图片加水印例程
- 下一篇: c# 类的基本知识,未完,待续