如何在C#中将SELECT COUNT语句的结果作为字符串返回?
发布时间:2020-12-15 19:50:26 所属栏目:百科 来源:网络整理
导读:我想知道如何从C#中的SELECT COUNT语句返回结果. 我有一个sql语句,返回15的计数. 目前,我正在返回datareader.我能以某种方式将结果作为字符串返回吗? static public SqlDataReader FillDataReader(string sql,SqlParameter[] parms){ SqlConnection conn =
我想知道如何从C#中的SELECT COUNT语句返回结果.
我有一个sql语句,返回15的计数. 目前,我正在返回datareader.我能以某种方式将结果作为字符串返回吗? 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块 我会把代码编写为: 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); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |