我正在开发一个会计桌面应用程序,它提供了许多有关用户的具体信息。
我遇到麻烦的部分就在这里
不应像我一样将date = comboBoxEdit2.EditValue.ToString();
行指定为null
。但我找不到更好的选择,很明显,编译器给我Object reference not set to an instance of an object.
错误。我使用devexpress并且只找到 .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);
}
}
}
答案 0 :(得分:0)
你应该检查以确保comboBoxEdit2.EditValue首先包含一个有效的日期值(假设这是C#;它不是从您应用的标签中清除),使用:
if (DateTime.TryParse(comboBoxEdit2.EditValue, out date))
{
// Your query execution code
}
如果不是日期,请执行查询,或者在没有参数的情况下进行设置。
另请注意,如果用户在您的文本框中输入恶意数据,您的代码很容易受到SQL注入攻击。以上情况更好,但您还应该考虑使用SQL参数来使其更安全。
DateTime.TryParse将尝试将表达式解析为DateTime对象,如果成功则返回true,否则返回false。如果成功,将使用DateTime对象填充out参数日期。