gpt4 book ai didi

c# - 如何在 C# 中将 SELECT COUNT 语句的结果作为字符串返回?

转载 作者:行者123 更新时间:2023-11-30 13:10:38 28 4
gpt4 key购买 nike

我想知道如何从 C# 中的 SELECT COUNT 语句返回结果。

我有一个返回计数 15 的 sql 语句。

目前,我正在归还数据读取器。我能以某种方式将结果作为字符串返回吗?

    static public SqlDataReader FillDataReader(string sql, SqlParameter[] parms)
{
SqlConnection conn = new SqlConnection(ConnectionString);
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader dr = null;
conn.Open();
cmd.CommandTimeout = 120; //120 seconds for the query to finish executing

foreach (SqlParameter p in parms)
{
cmd.Parameters.Add(p);
}
try
{
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (SqlException ex)
{
if (dr != null)
{
dr.Close();
}
conn.Close();


//DBUtilExceptionHandler(ex, sql);

throw ex;


}
finally
{
}

return dr; //This could be null...be sure to test for that when you use it

}

或者我可以使用不同的方法。我只是不知道它应该是什么。

感谢任何帮助。

这是我的选择语句:

        select count(LeadListID) from LeadLists WHERE SalesPersonID = 1
AND LeadListDateCreated BETWEEN '9/1/11' AND '10/1/11 23:59:59'

最佳答案

当然 - 只需使用:

int count = (int) query.ExecuteScalar();
// TODO: Decide the right culture to use etc
return count.ToString();

注意事项:

  • 使用 using 语句代替手动 try/catch/finally block
  • 无论是否有错误,您都应该关闭连接
  • 鉴于查询的自然结果是一个整数,我会将其更改为返回一个 int,而不是一个 string。如果来电者愿意,可以让他们进行转换
  • 如果出现错误,您几乎肯定应该让异常冒泡,而不是返回 null

我会把代码写成:

public static int ExecuteScalarInt32(string sql, SqlParameter[] parms)
{
using (SqlConnection conn = new SqlConnection(ConnectionString))
using (SqlCommand command = new SqlCommand(sql, conn) { Parameters = parms })
{
conn.Open();
command.CommandTimeout = 120;
return (int) command.ExecuteScalar();
}
}

如果您真的需要一个版本来处理任意数据读取器,您可以将其写成:

public static T ExecuteQuery<T>(string sql, SqlParameter[] parms,
Func<SqlDataReader, T> projection)
{
using (SqlConnection conn = new SqlConnection(ConnectionString))
using (SqlCommand command = new SqlCommand(sql, conn) { Parameters = parms })
{
conn.Open();
command.CommandTimeout = 120;
return projection(command.ExecuteReader());
}
}

然后调用它:

int count = ExecuteQuery<int>(sql, parms, reader => {
if (!reader.MoveNext()) {
throw new SomeGoodExceptionType("No data");
}
return reader.GetInt32(0);
});

关于c# - 如何在 C# 中将 SELECT COUNT 语句的结果作为字符串返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7637692/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com