首页 > 解决方案 > 如何更新数据库中的二进制数据

问题描述

我想进行更新查询,它将更新文本框、组合框和图片框中的所有数据。当我为文本框和组合框创建查询时,它工作正常。但是当我添加图片框图像二进制数据时,查询停止工作并且它也没有显示任何错误,它只是没有更新数据。我想更新数据库中的所有数据

这里的代码

private void updatebill()
{
        if (cn.State == ConnectionState.Closed)
        {
            cn.Open();
        }

        da = new OleDbDataAdapter();
        dt = new DataTable();
        ds = new DataSet();

        string str;

        str = "UPDATE BillTable set [Bill_No]= '"+ billno.Text + "', [Bill_Year] = '" + fylabel.Text + "', [Group_ID]= '" + groupidDB + "', [Vendor_Id]= '" + vendoridDB + "', [Amount]= '" + amount.Text + "', Picture1= @pict1 , Picture2= @pict2, Picture3= @pict3, Picture4= @pict4  where (ID= @billID)";

        cmd = new OleDbCommand(str, cn);
        cmd.Parameters.AddWithValue("@billID", Convert.ToString(BillIdentity.Text));
        cmd.Parameters.AddWithValue("@voucher", Convert.ToString(voucher.Text));

        // picture box
        if (PictureBox1.Image != null)
        {
            Bitmap bitmap = new Bitmap(PictureBox1.Image);
            byte[] pic = ImageToBytes(bitmap, System.Drawing.Imaging.ImageFormat.Jpeg);
            cmd.Parameters.AddWithValue("@pict1", pic);
        }
        else
        {
            cmd.Parameters.AddWithValue("@pict1", OleDbType.Binary).Value = DBNull.Value;
        }

        if (pictureBox2.Image != null)
        {
            Bitmap bitmap = new Bitmap(pictureBox2.Image);
            byte[] pic2 = ImageToBytes(bitmap, System.Drawing.Imaging.ImageFormat.Jpeg);
            cmd.Parameters.AddWithValue("@pict2", pic2);
        }
        else
        {
            cmd.Parameters.AddWithValue("@pict2", OleDbType.Binary).Value = DBNull.Value;
        }

        if (pictureBox3.Image != null)
        {
            Bitmap bitmap = new Bitmap(pictureBox3.Image);
            byte[] pic3 = ImageToBytes(bitmap, System.Drawing.Imaging.ImageFormat.Jpeg);
            cmd.Parameters.AddWithValue("@pict3", pic3);
        }
        else
        {
            cmd.Parameters.AddWithValue("@pict3", OleDbType.Binary).Value = DBNull.Value;
        }

        if (pictureBox4.Image != null)
        {
            Bitmap bitmap = new Bitmap(pictureBox4.Image);
            byte[] pic4 = ImageToBytes(bitmap, System.Drawing.Imaging.ImageFormat.Jpeg);
            cmd.Parameters.AddWithValue("@pict4", pic4);
        }
        else
        {
            cmd.Parameters.AddWithValue("@pict4", OleDbType.Binary).Value = DBNull.Value;
        }

        cmd.ExecuteNonQuery();
        cn.Close();
}

private byte[] ImageToBytes(Image image, System.Drawing.Imaging.ImageFormat format)
{
        using (System.IO.MemoryStream menStream = new System.IO.MemoryStream())
        {
            image.Save(menStream, format);
            return menStream.ToArray();
        }
}

标签: c#database

解决方案


推荐阅读