为什么我的ExecuteScalar不能工作?
本文关键字:工作 不能 ExecuteScalar 我的 为什么 | 更新日期: 2023-09-27 18:10:24
我试图返回结果作为一个字符串,我一直在cmd.ExecuteScalar()出错
有什么建议吗?
static public string GetScalar(string sql)
{
string result = "";
SqlConnection conn = new SqlConnection(ConnectionString);
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
try
{
result = cmd.ExecuteScalar().ToString();
}
catch (SqlException ex)
{
DBUtilExceptionHandler(ex, sql);
throw ex;
}
finally
{
conn.Close();
}
return result;
}
我将下面的sql语句传入sql:
select count(LeadListID) from LeadLists WHERE SalesPersonID = 1
AND LeadListDateCreated BETWEEN '9/1/11' AND '10/1/11 23:59:59'
在Server Management Studio中作为查询可以正常工作。
编辑:这个方法是有效的,我用错误构建了我的声明。谢谢你的帮助!
SqlCommand。ExecuteScalar返回一个Object类型。它执行查询,并返回查询返回的结果集中第一行的第一列。
如果你返回一个count
,你可能需要将返回值转换成一个Integer
counter = (Int32)cmd.ExecuteScalar();
没有确切的异常很难告诉你你做错了什么,但可以肯定的是,我不会使用ToString()。
试试这个:
int result = int.Parse(cmd.ExecuteScalar());
编辑
正如djacobson指出的那样,看起来GetScalar
方法被用于所有标量返回,在这种情况下,方法返回类型object
更有意义,并且在调用方法中进行强制转换/转换:
修改GetScalar
方法返回object
:
public object GetScalar(string sql)
{
//sql code
//execute scalar return object
return cmd.ExecuteScalar();
}
处理调用方法的强制类型转换和/或转换:
int result = int.Parse(GetScalar("..."));