现在的位置: 首页 > 综合 > 正文

存储图片到access数据库中

2018年05月26日 ⁄ 综合 ⁄ 共 1890字 ⁄ 字号 评论关闭

开发环境 VS2010+Access

在access数据库中新建数据库 并新建一张表 建两个字段 IMAGENAME,IMANGEBINARY

新建工程->winform程序

在窗体上 拖拽一个button按钮和一个picturebox

代码

 private void button1_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog dialog = new OpenFileDialog())
            {
                dialog.Filter = "jpg|*.jpg";
                dialog.Multiselect = false;
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    string fImageName = Path.GetFileNameWithoutExtension(dialog.FileName);
                    FileStream fs = new FileStream(dialog.FileName, FileMode.Open, FileAccess.Read);
                    BinaryReader br = new BinaryReader(fs);
                    byte[] fInputImageBinary = br.ReadBytes((int)fs.Length);
                    br.Close();
                    fs.Close();
                    // 保存到数据库
                    if (this.InsertImageToAccess(fImageName, fInputImageBinary) > 0)
                    {
                        //MessageBox.Show("插入成功");
                    }
                    
                    // 从数据库获取图片并显示到 pictureBox1
                    Byte[] fOutputImageBinary = this.GetImageFromAccess(fImageName);
                    MemoryStream ms = new MemoryStream(fOutputImageBinary);
                    pictureBox1.Image = Image.FromStream(ms);
                }
            }
        }

        public int InsertImageToAccess(String fImageName, Byte[] fImageBinary)
        {
            // Access 表// 字段// ImageName 文本// ImageBinary OLE 对象
            using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\RacialCarDB.mdb"))
            {
                OleDbCommand fInsertCommand = new OleDbCommand();
                fInsertCommand.Connection = conn;
                fInsertCommand.CommandText = "update tb_carBrandInfo set logo = ? where qcpp = ?";
                fInsertCommand.Parameters.Add("@logo", OleDbType.Binary, fImageBinary.Length).Value = fImageBinary;
                fInsertCommand.Parameters.Add("@qcpp", OleDbType.VarChar).Value = fImageName;
                conn.Open();
                return fInsertCommand.ExecuteNonQuery();
            }
        }

        public Byte[] GetImageFromAccess(String fImageName)
        {
            using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\RacialCarDB.mdb"))
            {
                OleDbCommand fSelectCommand = new OleDbCommand();
                fSelectCommand.Connection = conn;
                fSelectCommand.CommandText = "SELECT logo FROM tb_carBrandInfo WHERE qcpp = @qcpp";
                fSelectCommand.Parameters.Add("@qcpp", OleDbType.VarChar).Value = fImageName; conn.Open();
                object o = fSelectCommand.ExecuteScalar();
                return (o == null ? null : (Byte[])o);
            }
        }

抱歉!评论已关闭.