获取选择SQL Server的返回计数

时间:2015-02-07 01:53:06

标签: c# sql-server select

我正在尝试获取查询的返回计数。在我的情况下,它总是0或1.我将客户插入我的数据库,我是否已经存在,如果他们这样做我抛出异常,如果不是我插入。这就是我所拥有的:

string selectQuery = "select ([Cust_Num]) from [TBL_Customer] where [Cust_Num] = '" + myTable.Rows[i][custNum] + "'";
SqlCommand sqlCmdSelect = new SqlCommand(selectQuery, sqlConn);
sqlCmdSelect.Connection.Open();
sqlCmdSelect.ExecuteNonQuery();

//checks if query returned anything
int queryCount = Convert.ToInt32(sqlCmdSelect.ExecuteScalar());
sqlCmdSelect.Connection.Close();

现在,如果我的表中不存在,queryCount会返回0。但如果确实存在,则返回客户编号。因此,不是返回1而是返回123456,这是客户编号.....

有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:2)

而是使用count聚合

select count(Cust_Num) from [TBL_Customer] where [Cust_Num] = ..
对于给定的cust_num Count聚合,

将计算cust_num出现的次数。如果cust_num存在,则会返回count其他0

甚至1为硬编码值

select 1 from [TBL_Customer] where [Cust_Num] =..

此处如果cust_num存在则会返回1,否则将返回任何内容

答案 1 :(得分:0)

这里有几点。 为什么在代码中使用ExecuteNonQuery和ExecuteScalar?如果您只需要计数,@ NoDisplayName给出的上述答案是完美的。

示例:此示例将返回最后一个版本Coleridge的员工数。

SqlCommand Cmd = new SqlCommand("SELECT COUNT(1) FROM Employee WHERE LastName='Coleridge'"); int result = Convert.ToInt32(Cmd.ExecuteSaclar());