【问题标题】:Record count in c# query resultc#查询结果中的记录数
【发布时间】:2015-01-10 12:16:35
【问题描述】:

如何获取查询结果中的总记录数

   SqlConnection con1 = new SqlConnection(ConfigurationManager.ConnectionStrings["con1"].ConnectionString);
              string sql = "select  Fare , OrderAmount FROM orderitems OI INNER JOIN Orders O ON O.OrderID = OI.OrderID WHERE PaymentStatusID = 1  AND o.orderid ="+Orderid;                 
            SqlCommand comd = new SqlCommand(sql, con1);
               con1.Open();
              comd.ExecuteNonQuery();

以上是我的 sql 查询,我需要结果计数,有人可以帮我吗 提前致谢。

【问题讨论】:

标签: c# sql asp.net


【解决方案1】:

ExecuteNonQuery 用于插入/更新/删除等查询。

改用ExecuteScalar

string sql = "select  count(*) FROM orderitems OI INNER JOIN Orders O ON O.OrderID = OI.OrderID WHERE PaymentStatusID = 1  AND o.orderid ="+Orderid;    
SqlCommand comd = new SqlCommand(sql, con1);
con1.Open();
int count = Convert.ToInt32(comd.ExecuteScalar());

【讨论】:

    【解决方案2】:

    如果您不需要FareOrderAmount(有点奇怪,因为您编写的sql 脚本包含它们),您可以将它们替换为COUNT(*)

    string sql = "select  COUNT(*) FROM orderitems OI INNER JOIN Orders O ON O.OrderID =  OI.OrderID WHERE PaymentStatusID = 1  AND o.orderid ="+Orderid;        
    

    那么你可以很容易地阅读这个,如下所示:

    int numberOfRecords = Convert.ToInt32(comd.ExecuteScalar());
    

    另一方面,如果您需要它们,您可以计算用于读取这些结果的 sql 阅读器中的记录数,如下所示:

    SqlDataReader sqlReader = comd.ExecuteReader(); 
    
    int numberOfRecords = 0;
    while(sqlReader.Read())
    {
        // do things
        numberOfRecords++;
    }
    

    注意

    无论如何,您都不能使用ExecuteNonQuery 方法,因为您想从数据库中读取某些内容。您不想创建、更新或删除某些内容。只有在后一种情况下,我们才使用这种方法。

    一个更重要的注意事项是关于您构建然后执行的查询的安全性 是避免字符串连接 以传递参数值。这使您的应用容易受到 sql 注入的攻击,这是主要的攻击方式之一。您可以使用 sql 参数化查询来代替这样做,如下所示:

     string sql = "select  Fare , OrderAmount  FROM orderitems OI INNER JOIN Orders O ON O.OrderID = OI.OrderID WHERE PaymentStatusID = 1  AND o.orderid=@Orderid";
     SqlCommand cmd = new SqlCommand(sql, con1);
     cmd.Parameters.Add("@Orderid",OrderId);
    

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多