我正在尝试获取查询的返回计数。在我的情况下,它总是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
,这是客户编号.....
有谁知道为什么会这样?
答案 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());