C# 正在获取选定SQL Server的返回计数

C# 正在获取选定SQL Server的返回计数,c#,sql-server,select,C#,Sql Server,Select,我正在尝试获取查询的返回计数。在我的例子中,它总是0或1。我正在将一个客户插入到我的数据库中,我关心他们是否已经存在,如果他们已经存在,我抛出一个异常,如果不存在,我插入。这就是我所拥有的: string selectQuery = "select ([Cust_Num]) from [TBL_Customer] where [Cust_Num] = '" + myTable.Rows[i][custNum] + "'"; SqlCommand sqlCmdSelect = new SqlCom

我正在尝试获取查询的返回计数。在我的例子中,它总是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
,这是客户编号


有人知道为什么会发生这种情况吗?

改用
count
aggregate

select count(Cust_Num) from [TBL_Customer] where [Cust_Num] = ..
对于给定的cust_num
Count
aggregate将计算出现的次数
cust_num
。如果
cust\u num
存在,它将返回
count
else
0

甚至
1
作为硬编码值

select 1 from [TBL_Customer] where [Cust_Num] =..
在这里,如果存在
cust_num
,那么它将返回
1
,否则将不返回任何内容。 为什么在代码中使用ExecuteOnQuery和ExecuteScalar?如果您只需要计数,@NoDisplayName给出的上述答案是完美的

示例:此示例将返回上次使用anme Coleridge的员工数


SqlCommand Cmd=newsqlcommand(“从LastName='Coleridge'”中的雇员中选择计数(1));
int result=Convert.ToInt32(Cmd.ExecuteSaclar())


(与您的问题没有直接关系)。你应该参数化你的查询。(也没有直接关系,但最后一个人做了:)抛出一个异常来处理一个已知案例是不好的形式。此外,异常在性能上是昂贵的。那么,适当的操作是什么呢?我现在很好奇@thbbfta,但不知道业务逻辑。。。我要说的是,返回0(false)或1(true)并简单地通知用户他们无法创建该帐户。并且该帐户仍将存储在我的queryCount变量中?@codeFinatic-我是一个数据库人员,不确定你的c#查询是如何工作的。谢谢你的输入,我最终纠正了它。