【问题标题】:C# Count number of rows in sql resultC#计算sql结果中的行数
【发布时间】:2017-05-18 16:37:52
【问题描述】:
Connection c = new Connection();
public string checkIfExists(string Name)
    {
        string sql = "SELECT * FROM users WHERE name = '" + name + "'";
        c.Execute(sql);

        return "";
    }

c.Execute(sql) 正在调用 SqlCommand 函数来执行 sql 查询。

我想知道如何计算此查询检索到的行数。

忽略返回。

【问题讨论】:

标签: c# sql


【解决方案1】:
  1. 确保您的 SQL 免受 parameterizing 它的 SQL 注入攻击
  2. 重写 SQL 以返回 COUNT
  3. 使用ExecuteScalar检索答案

查询应如下所示:

var sql = "SELECT COUNT(*) FROM users WHERE name = @Name";

【讨论】:

  • 因为他的方法名称是 checkIfExists,所以最好只获取索引键并调用.HasRows。它会更快一些并且清楚地定义他想要什么(假设他所说的他想要的实际上与他的方法名称不匹配,因为它也不返回布尔值)。
  • @Dispersia 确实如此。不过,我希望 OP 专注于基础知识,这样他就可以消除一个关键漏洞并首先得到他的查询的答案,然后再担心性能。很有可能,他会发现这个解决方案的性能可以接受,并且不会担心进一步优化它。
  • 这是真的,对于 OP 来说只是深思熟虑,因为他的方法命名和返回类型甚至都不匹配:)
  • @Name 将获取方法中接收到的名称变量还是我必须创建一个参数?
  • @RafaelDuarte 您需要创建一个参数,并将其值设置为方法的参数Name(C# 命名约定建议在name 中使用小写n)。按照答案中的第一个链接获取有关如何使用参数的信息。方法不止一种;与链接的问答显示代码示例不同的答案。
【解决方案2】:

这是 Sam SQL 查询:

SELECT COUNT(1) FROM nazvaniyami
SQL query with condition:

SELECT COUNT(1) FROM nazvaniyami WHERE condition
Implementation in PHP:

$a = mysql_query("SELECT COUNT(1) FROM navaneetham");
$b = mysql_fetch_array( $a );
echo $b[0]; // prints the number of rows

同样,可以添加条件。然后代码打印表中满足条件的行数。 感谢您的关注,Maxim 与您同在

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多