如何使用 C# 更新 OLE 数据库中的 PictureBox 图片值
How to update a PictureBox picture value in OLE database using C#
我的 C# 代码正在使用 OLE 数据库。在标题为 ProjectParty 的 table 中,我通过 WinForm 以字节为单位保存图片值。也就是说,我有另一种形式应该允许用户更新 table 的值,包括 picture.
我正在尝试使用以下代码将用户更改更新回 table。
private void btnSaveChanges_Click(object sender, EventArgs e)
{
OleDbConnection oleDbConn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=HesabKetab.accdb;Persist Security Info=False");
OleDbCommand oleDbCmd = new OleDbCommand("UPDATE ProjectParty SET title=@title, manager=@manager, tel=@tel, mobile=@mobile, address=@address, picture=@picture "
+ "WHERE ID=@id",oleDbConn);
//add parameters
oleDbCmd.Parameters.AddWithValue("@title", txtInstTitle.Text);
oleDbCmd.Parameters.AddWithValue("@manager", txtInstManager.Text);
oleDbCmd.Parameters.AddWithValue("@tel", txtOfficePhone.Text);
oleDbCmd.Parameters.AddWithValue("@mobile", txtMobileNo.Text);
oleDbCmd.Parameters.AddWithValue("@address", txtAddress.Text);
oleDbCmd.Parameters.AddWithValue("@id", Convert.ToInt32(comboInstID.SelectedValue.ToString()));
byte[] picByte = null;
if(pictureBoxInstLogo.Image!=DBNull.Value){
picByte= (byte[])pictureBoxInstLogo.Image;
}
oleDbCmd.Parameters.AddWithValue("@picture", picByte);
try
{
oleDbConn.Open();
oleDbCmd.ExecuteNonQuery();
}
catch (Exception ex) { MessageBox.Show(ex.Message, "خطای دیتابیس", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); }
}
我遇到语法错误,
Operator != cannot be applied to operands of type System.Drawing.Image and System.DBNull.
和
Cannot implicitly convert System.Drawing.Image to byte[].
我应该如何检查 pictureBox 是否有图像,如果有,将其内容保存回数据库?
pictureBoxInstLogo.Image != null
这将检查图片框是否有图像,
如果它确实有图像,您需要使用定位将图像转换为字节;
picByte = System.IO.File.ReadAllBytes(pictureBoxInstLogo.ImageLocation)
我的 C# 代码正在使用 OLE 数据库。在标题为 ProjectParty 的 table 中,我通过 WinForm 以字节为单位保存图片值。也就是说,我有另一种形式应该允许用户更新 table 的值,包括 picture.
我正在尝试使用以下代码将用户更改更新回 table。
private void btnSaveChanges_Click(object sender, EventArgs e)
{
OleDbConnection oleDbConn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=HesabKetab.accdb;Persist Security Info=False");
OleDbCommand oleDbCmd = new OleDbCommand("UPDATE ProjectParty SET title=@title, manager=@manager, tel=@tel, mobile=@mobile, address=@address, picture=@picture "
+ "WHERE ID=@id",oleDbConn);
//add parameters
oleDbCmd.Parameters.AddWithValue("@title", txtInstTitle.Text);
oleDbCmd.Parameters.AddWithValue("@manager", txtInstManager.Text);
oleDbCmd.Parameters.AddWithValue("@tel", txtOfficePhone.Text);
oleDbCmd.Parameters.AddWithValue("@mobile", txtMobileNo.Text);
oleDbCmd.Parameters.AddWithValue("@address", txtAddress.Text);
oleDbCmd.Parameters.AddWithValue("@id", Convert.ToInt32(comboInstID.SelectedValue.ToString()));
byte[] picByte = null;
if(pictureBoxInstLogo.Image!=DBNull.Value){
picByte= (byte[])pictureBoxInstLogo.Image;
}
oleDbCmd.Parameters.AddWithValue("@picture", picByte);
try
{
oleDbConn.Open();
oleDbCmd.ExecuteNonQuery();
}
catch (Exception ex) { MessageBox.Show(ex.Message, "خطای دیتابیس", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); }
}
我遇到语法错误,
Operator != cannot be applied to operands of type System.Drawing.Image and System.DBNull.
和
Cannot implicitly convert System.Drawing.Image to byte[].
我应该如何检查 pictureBox 是否有图像,如果有,将其内容保存回数据库?
pictureBoxInstLogo.Image != null
这将检查图片框是否有图像,
如果它确实有图像,您需要使用定位将图像转换为字节;
picByte = System.IO.File.ReadAllBytes(pictureBoxInstLogo.ImageLocation)