如果发生DBNULL,如何显示消息框

时间:2019-04-26 08:54:55

标签: c# sql winforms

我遇到一个问题,如果我通过java.io.File.listFiles()搜索数据而数据库中的数据不存在 ,则会出现错误

  

“无法将对象从DBNull强制转换为其他类型。”

我正试图让TextBox似乎说数据不存在,并且无法弄清楚该怎么做。

我尝试使用MessageBox语句,其中如果if等于TextBox,则出现DBNull。这MessageBox DBNull t work and im not too sure why. The error occurs with me trying to **equal** to TextBox是否表示数据不存在?

. How do i produce a

我的预期结果是为了使消息框出现,表明如果搜索到数据不存在。但如果这样做,数据将显示在消息框中。

3 个答案:

答案 0 :(得分:2)

您有 3 个案例可以实施:

    完全没有
  1. 数据:检查>
  2. 无效数据,例如<:检查wait
  3. 有效数据,例如null:借助1 + 2 + NULL + 3 == NULL
  4. 进行转换

代码:

DBNull.Value

答案 1 :(得分:1)

我将使用decimal.tryparse来查看是否返回了数据

            SqlConnection con = new SqlConnection("***COnString**");
            con.Open();
            SqlCommand comm = new SqlCommand("SELECT SUM (Total_Hours_Day) FROM Sign_In_Out_Table, User_Table WHERE User_Table.FirstName = '" + Search_Username_Alerts_Admin_txtbox.Text + "' AND Sign_In_Out_Table.eb_number = User_Table.eb_number AND Date between GETDATE()-14 and GETDATE()", con);
            string TotalHoursFortnight = (comm.ExecuteScalar()).ToString();
            con.Close();

            decimal sum = 0;
            decimal temp;
            if(!decimal.TryParse(TotalHoursFortnight, out temp)) 
            { 

                MessageBox.Show("No Data Exists");
            }
            else
            {
                sum += temp;

                MessageBox.Show(Search_Username_Alerts_Admin_txtbox.Text + ":" + Environment.NewLine + " Hours Worked = " + TotalHoursFortnight, ("Working Info Admin"), MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

答案 2 :(得分:0)

您需要为查询结果检查null

var result = comm.ExecuteScalar();
    if(result != null){
         decimal TotalHoursFortnight = Convert.ToDecimal(comm.ExecuteScalar());
         // move remain code to if block
    }

并且if (Search_Username_Alerts_Admin_txtbox.Text == DBNull)应该更改为

if (Convert.IsDBNull(Search_Username_Alerts_Admin_txtbox.Text){

}