zoukankan      html  css  js  c++  java
  • 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);


            }

  • 相关阅读:
    python中type、object与class之间关系(一切皆对象)
    为什么在python中推荐使用多进程而不是多线程(转载)
    CPU密集型 VS IO密集型
    多CPU,多核,多进程,多线程
    Mac下brew安装与配置mysql
    mac安装navicat mysql破解版
    微信公众号-h5调用微信支付
    为什么js中0.1+0.2不等于0.3,怎样处理使之相等?(转载)
    gitlab安装和汉化
    PyPI使用国内源
  • 原文地址:https://www.cnblogs.com/hackpig/p/1668441.html
Copyright © 2011-2022 走看看