sql server-获取c#中的记录总数

本文关键字:记录 server- 获取 sql | 更新日期: 2023-09-27 18:00:13

运行以下查询时,我正在尝试获取记录总数:

var cmd =new SqlCommand("SELECT * FROM Issue where BookID = @bid and IssueDate = @idate order by IssueDate desc", conn);
cmd.Parameters.AddWithValue("bid", bookid);
cmd.Parameters.AddWithValue("idate", DateTime.Now);
int val = cmd.ExecuteNonQuery();

数据库中有一条可用记录,但val总是返回-1。

sql server-获取c#中的记录总数

问题:您正试图执行查询,该查询返回表中的实际记录,但不返回记录计数。

解决方案:要从表中获取总记录,您需要调用以下查询:

语法:

SELECT COUNT(*) FROM [TABLENAME];

注意:要读取记录计数,可以调用ExecuteReader()ExecuteScalar()方法。

但我强烈建议在只有一个记录/值要读取时调用CCD_ 4。

编辑:此处不需要order by子句,因为记录的顺序不会影响计数值。

试试这个:

var cmd =new SqlCommand("SELECT COUNT(*) FROM Issue where BookID = @bid and 
                                               IssueDate = @idate");
cmd.Parameters.AddWithValue("bid", bookid);
cmd.Parameters.AddWithValue("idate", DateTime.Now);
int totalRecords = Convert.ToInt32(cmd.ExecuteScalar());

您可以遍历所有记录,也可以自己进行另一个查询来计数。

另外,不要忘记将SqlCommand包装为using语句,因为它实现了IDisposable接口。

来自MSDN:

对于UPDATE、INSERT和DELETE语句,返回值是受命令影响的行数。当正在插入或更新的表上存在触发器时,返回值包括受插入或更新操作影响的行数以及受一个或多个触发器影响的行数来对于所有其他类型的语句,返回值为-1。如果发生回滚,返回值也为-1。

因此,您应该使用已经提出的基于COUNT的解决方案。