我是C#编程语言的新手。我有问题如何在数据库中检查图像是否存在?我正在使用数据库内连接。我目前的代码是工作。但是如果数据库中不存在图像,则所有文本框都不会从数据库中获取值。我不希望这样。我想要这样>如果图像不存在,即使图像不存在,所有文本框都从数据库中获取它们的值。请有人帮帮我这是我的代码:
private void textBoxEmplNo_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (textBoxEmplNo.Text != "")
{
string selectSql = "select a.name, a.empno, a.workno, a.icnum, a.passport, a.deptno, a.section, a.designation, b.path from m_employee a inner join m_emp_photo b on b.empno=a.empno where a.empno= @empno";
SqlCommand cmd = new SqlCommand(selectSql, con);
cmd.Parameters.AddWithValue("@empno", textBoxEmplNo.Text);
bool isDataFound = false;
try
{
con.Open();
using (SqlDataReader read = cmd.ExecuteReader())
{
while (read.Read())
{
isDataFound = true;
textBoxWorkNo.Text = (read["workno"].ToString());
textBoxName.Text = (read["name"].ToString());
textBoxICPass.Text = (read["icnum"].ToString());
textBoxPassport.Text = (read["passport"].ToString());
textBoxDept.Text = (read["deptno"].ToString());
textBoxSection.Text = (read["section"].ToString());
textBoxDesignation.Text = (read["designation"].ToString());
pictureBox1.Visible = true;
pictureBox1.Image = Image.FromFile("" + read["path"].ToString());
dataGridView1.Visible = false;
}
}
if (!isDataFound)
{
textBoxEmplNo.Text = "";
textBoxWorkNo.Text = "";
textBoxName.Text = "";
// Display message here that no values found
MessageBox.Show("No Result Found");
}
}
finally
{
con.Close();
}
}
else
{
textBoxWorkNo.Text = "";
textBoxName.Text = "";
}
dataGridView1.Visible = false;
}
}
答案 0 :(得分:0)
根据我的理解,您希望显示员工数据而不管他的照片是否存在于数据库中,因此表格上的left join
会使您的查询更改如下,
select a.name, a.empno, a.workno, a.icnum, a.passport, a.deptno, a.section, a.designation, b.path
from
m_employee a left join m_emp_photo b
on b.empno=a.empno
where
a.empno= @empno
这将为您提供左侧表中给定员工编号的所有记录,如果没有可用值,则从右侧为匹配,然后从右侧表中为该行提供NULL
。
虽然您需要在代码中处理NULL
的{{1}}值。
所以在代码行之前的代码中,
b.Path
通过与pictureBox1.Image = Image.FromFile("" + read["path"].ToString());
进行比较,检查path
是否为DBNULL
。