c# - 如何更新数据库中的二进制数据
问题描述
我想进行更新查询,它将更新文本框、组合框和图片框中的所有数据。当我为文本框和组合框创建查询时,它工作正常。但是当我添加图片框图像二进制数据时,查询停止工作并且它也没有显示任何错误,它只是没有更新数据。我想更新数据库中的所有数据
这里的代码
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 - 总线错误:尝试在方法之间传递字符时返回 10
- java - 科尔多瓦 8 发送静音短信
- node.js - React-Router如何防止重定向
- rust - 有条件地将命令的标准输出转换为字符串的寿命不够长
- jquery - 如何在 jQuery 中对子元素正确执行选择
- python - 在 python 中使用 pyplot 绘制多个图
- c++ - 转换 std::vector
到 matlab setVariable 可用数组 - c# - 如何将 Google Cloud SQL 与 C# 连接起来
- mysql - 如果他在投票表中的条目最高,则从候选人表中选择姓名
- css - 使用 CSS flexbox 网格填充 API 数据