2017-05-18 8 views
1
Connection c = new Connection(); 
public string checkIfExists(string Name) 
    { 
     string sql = "SELECT * FROM users WHERE name = '" + name + "'"; 
     c.Execute(sql); 

     return ""; 
    } 

c.Execute(sql)は、SQLクエリを実行するSqlCommand関数を呼び出しています。C#結果の行数のカウント

このクエリによって取得された行の数をカウントする方法を知りたいと思います。

リターンを無視します。

+5

あなたはSQL注入性があります。 – SLaks

+0

[SQLクエリからのキャプチャカウント](https://stackoverflow.com/questions/4668911/capturing-count-from-an-sql-query) – Burgi

答えて

7
  1. あなたのSQLをparameterizingによってSQLインジェクション攻撃から保護されていることを確認し、それが
  2. リライトSQLは答えを取得するためにCOUNT
  3. 使用ExecuteScalarを返すために

クエリは次のようになります。

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

彼のメソッドの名前がcheckIfExistsなので、それはおそらくインデックスされたキーを取得し、 '.HasRows'を呼び出す方がよいでしょう。それは少し速く、彼が望んでいると仮定したものが実際に彼のメソッド名と一致しないと仮定すると、ブールを返さないので、明確に定義します。 – Dispersia

+1

@Dispersiaそれは確かに当てはまります。私はOPを基本に集中させて、重大な脆弱性を排除し、最初に質問に対する回答を得て、後でパフォーマンスを心配するようにしました。良い解決策は、このソリューションのパフォーマンスが受け入れられることです。それ以上の最適化の心配もありません。 – dasblinkenlight

+1

彼のメソッドの名前と戻り値の型が実際には一致しないので、これは実際のところ、OPのためのより多くの考えのための食べ物でした。 – Dispersia

3

サムの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 

同様に、条件を追加することは可能です。次に、条件を満たすテーブルの行数を出力します。 あなたが注目してくれてありがとう、マキシムでした

関連する問題