我已经创建了一种方法来在每次数据添加到数据库时检查数据库。原因是检查重复的主键(手动生成)。我面临的问题是即使数据存在于数据库中,该方法始终返回空值。在插入数据之前检查数据库时总是得到空值
这里是我的代码:
public int checkComRegnumberAvailable(string conRegnumber)
{
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "SELECT RegNumber FROM OtherCompanyData";
con.Open();
//string result = ((string)cmd.ExecuteScalar());
string result = (string)cmd.ExecuteScalar();
cmd.ExecuteNonQuery();
if (result == null)
{
return 0;
}
if (result.Equals(conRegnumber))
{
return 1;
}
else
{
return 2;
}
}
}
你确定你的'选择RegNumber FROM OtherCompanyData'返回的数据?您是否在Management Studio上尝试过?如果'result'为'null',那意味着你的命令返回空集。 'cmd.ExecuteNonQuery()'在你的情况下是无用的。它什么都不做。 –
当你使用'select'类时,你不能使用ExecuteScalar。 select将返回记录列表(即使记录只包含每个记录的一个值)。你实际上在寻找什么,如果一个带有'conRegnumber'值的记录已经存在? –
@SteenTøttrup['ExecuteScalar'](https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar(v = vs.110).aspx):_返回第一列结果集中的第一行由query_ – Grundy