C#:错误:对象引用设置为对象的实例

C#:错误:对象引用设置为对象的实例,c#,object,reference,C#,Object,Reference,我正在开发一个会计桌面应用程序,它提供了许多关于用户的特定信息 我遇到麻烦的部分就在这里 date=comboBoxEdit2.EditValue.ToString()行不应该像我那样被分配为null。但我找不到更好的选项,显然,编译器给我的对象引用未设置为对象的实例。错误。我正在使用并仅找到.EditValue控件来检查数据库中的信息 多谢各位 这是我的完整方法 public void fillCombo2() { using (SqlConnectio

我正在开发一个会计桌面应用程序,它提供了许多关于用户的特定信息

我遇到麻烦的部分就在这里
date=comboBoxEdit2.EditValue.ToString()行不应该像我那样被分配为
null
。但我找不到更好的选项,显然,编译器给我的对象引用未设置为对象的实例。
错误。我正在使用并仅找到.EditValue控件来检查数据库中的信息

多谢各位

这是我的完整方法

public void fillCombo2()
        {
            using (SqlConnection con = new SqlConnection("Server=DLL;Database=BSSERVIS;User Id=sa;Password=1;"))
            {
                con.Open();
                string date = ("select DATE from BSSERVIS.dbo.ENUMERATION");
                date = comboBoxEdit2.EditValue.ToString();
                System.Data.SqlClient.SqlDataReader dr = null;               
                SqlCommand cmd = new SqlCommand("select distinct(DATE) from BSSERVIS.dbo.ENUMERATION where WAREHOUSE_NR='" + date + "'");
                dr = cmd.ExecuteReader();
                dr.Read();
                while (dr.Read())
                {
                    string date = dr.GetString(0);
                    comboBoxEdit2.Properties.Items.Add(date);
                }

            } 
        }

您应该首先检查以确保comboBoxEdit2.EditValue包含有效的日期值,可能(假设这是C#;您应用的标记不清楚):

如果不是日期,则不要执行查询,或者在没有参数的情况下设置查询

还要注意,如果用户在文本框中输入恶意数据,则代码容易受到SQL注入攻击。上面的方法更好,但您还应该考虑使用SQL参数使其更安全


DateTime.TryParse将尝试将表达式解析为DateTime对象,如果成功,则返回true,否则返回false。如果成功,out参数date将被DateTime对象填充。

这可能有助于:-减少问题以找到问题。删除日期变量并对其进行硬编码(暂时)-如果可行,则编辑问题以仅包含相关代码。这是一个日期,我正在尝试从数据库中提取它。是的,这是一个c代码。抱歉,标记选择不正确。我的意思是,您应该使用我引用的代码检查表达式是否返回日期。如果用户没有选择或输入值,因此表达式为空,它将不会解析为日期,并且在您的代码中您可以做出相应的反应。哦,现在我理解了您的建议。
if (DateTime.TryParse(comboBoxEdit2.EditValue, out date))
{
    // Your query execution code
}