から返されるだけ単一の行を強制しますか?は、私は私のコードでは、この非常に多くのことを書くように見えるのDataReader
答えて
私は知りませんが、このコードは、拡張メソッドに委任することができます。
public static R Single<R>(this DataReader reader, Func<DataReader,R> selector) {
R result = default(R);
if (reader.Read())
result = selector(reader);
if (reader.Read())
throw new DataException("multiple rows returned from query");
return result;
}
はそのように使用する:
using (var reader = cmd.ExecuteReader())
{
User u = reader.Single(r => new User((int)r["UserId"], r["UserName"].ToString()))
}
は、コードの重複からあなたを保存します。
'SqlCommand'の拡張メソッドを作ることで、より重複したコードを避けることができます。 'User u = cmd.Single(...);' –
確かに、その低レベルのAPI上で、いくつかの拡張メソッドを使って、かなり使いやすいものにすることができます:) – flq
私は拡張機能が好きではありません'SqlCommand'は有用なインターフェースを実装していないのであまりにも大変です。 – fearofawhackplanet
SQLを使用してデータを取得する場合は、データリーダーを使用する必要があるたびにその種のコードを削除すると便利です。
SELECT TOP ([Number of rows you want to be selected])
FROM [Table Name]
WHERE [Condition]
EX:
SELECT TOP (1)
FROM tblUsers
WHERE Username = 'Allan Chua'
別のチップを使用ストアドプロシージャ、SQLクエリと、不要なコーディングの繰り返しを最小限に抑えることができ、それらを使用します。
これは、あなたの目標が何であるかに応じて役立つかもしれません。適切な例外をスローするために複数の行が返されたことを検出する必要がある場合、これは役に立ちません。
結果が1つのみ返されるようにするには、このメソッドを使用してパフォーマンスバンプを取得する可能性があります。私が理解しているところでは、データプロバイダはこれを使用して、単一の行結果を予期してクエリを最適化することができます。
いずれの場合でも、SqlCommand.ExecuteReaderを使用してデータリーダーを作成し、CommandBehavior列挙(特にCommandBehavior.SingleRow)から引数を渡します。 ExecuteReaderはこれを受け入れるためにオーバーロードされます。
SqlCommand.ExecuteReader overload
だからあなたのコードは次のようになります。
using (var reader = cmd.ExecuteReader(CommandBehavior.SingleRow))
{
if (reader.Read())
{
result = new User((int)reader["UserId"], reader["UserName"].ToString());
}
}
- 1. 私はこの1つのように答えの多くを見る
- 2. 私はこのような私の見解を書くビュー
- 3. はどのようにJavaで、私はこのコードを書くことに出くわした
- 4. バッチ/ペーストは、私はバッチファイルを書くことに非常に新しいです
- 5. どのように私は常にwebserver.ASP.NETで実行するコード部分を書くことができます
- 6. 多くの反復とループは、このコードの実行非常に遅い
- 7. は、それは私自身が多く、このコードを書く見つけ、自動的にプロパティ変更
- 8. は手動で私は、これは非常識に見えるけど、私はこのような何かをやろうとしているRailsの
- 9. は、どのように私は私のhtmlコードで、このためのNGリピートを書くのです
- 10. 私はvuejsにいくつかのPHPコードを書くことができますどのように
- 11. このコードをより良く見えるようにするには
- 12. 私はこのように見えたいくつかの.NET 2.0のコードを見たビット列挙
- 13. 機能は、私は、ストアドプロシージャでこのクエリを持っている私のクエリは非常にゆっくりと
- 14. 私は(とも他のコードで)多くのsymfonyのバンドルでは、この行を見ているでtrigger_error
- 15. どのように私は正しくここに非-devの正規表現
- 16. gitのは、非常に多くのファイル
- 17. Djangoは非常に私はここに、このビュー持つ
- 18. は、ここに私の質問は非常にシンプルなNode.jsの
- 19. のRails、ActiveRecordは、多くのクエリは、(含める?)私はこのような問題を抱えて例えば
- 20. は、どのように私はキュウリでこのシナリオを書くキュウリ/カピバラ
- 21. Shibbolethのは、私は答えを見つけようと多くの時間だけでなく、検索することはできませんしている
- 22. アプリケーションは、私がここにいくつかの非常に簡単なコードを持っているWebページ
- 23. は、どのように私はここでは、コードですHttpClientHandler.CookieContainer
- 24. 私のコードは非常に遅く実行されます
- 25. は、どのように私は私のMVC 3ビューで書くことができる午前
- 26. フィルタリングデータフレーム、私はより多くのパンダの方法で、次のコードを書くことができますどのように
- 27. Tensorflow:私のコードがどのように見えるか、反復プログラムここで
- 28. codeigniterデータベースに左結合を書く方法?ここに私のコードは
- 29. 別の方法は書くことであれば、私は私のJavaScriptコードを縮小する過程で午前とこの巨大なif文書くためのより多くのエレガン方法がある場合、私は思っていたのjavascript
- 30. 私はこのaspコードを書くことができません
クエリを管理している場合はたぶん、あなたはそれに 'TOP '1'を行うことができます。..あなたのデータベースの完全性をチェックしたいならば、これを行う代わりに 'WHERE'クエリのカラムに対して' UNIQUE INDEX'を置くべきでしょう。 –
あなたのSQLクエリにTOP 1を追加するのはどうですか? – Stecya
私はトップ1を望んでいません、私は例外が欲しいです。彼らはまったく同じものではありません。 – fearofawhackplanet