答えて
bool useName = !String.IsNullOrEmpty(txtUsername.Text);
StringBuilder query = new StringBuilder("select * from xy where [email protected]");
if(useName)
query.Append(" AND [email protected]");
SqlCommand cmd = new SqlCommand(query.ToString());
// add ID param
if(useName) {
// add name param
}
Tnx。 最後に、どのようにしてcmdでクエリを取得し、それを文字列に入れることができるか知っていますか?私は文字列query2 = cmd.ToString()はトリックをしないと思う:P – Attila
bool useName = String.IsNullOrEmpty(txtUsername.Text); bool useName =!String.IsNullOrEmpty(txtUsername.Text);でなければなりません。 –
@Attila cmd.CommandTextはslq文を保持します。 'string query2 = cmd.CommandText;' –
あなたは
"SELECT * FROM xy WHERE id = @id and (@name = '' OR name = @name");
にあなたのクエリを変更することができますが、パラメータに値がないときに、クエリでふざける保存します。
私はなぜyou'getをダウン票を知らない、この解決策は良い解決策 –
これは確かにされています非常にクールなソリューション。しかし、クエリオプティマイザがスマートで、@nameが空の場合に 'where'ブロックがトートロジを持つことが分かります。それ以外の場合、このクエリは2つの文字列比較のオーバーヘッドを持ちます。常にNULL値を確認することを忘れないでください。 – hage
SqlCommand cmd = new SqlCommand();
if(txtUsername.Text != string.Empty)
{
cmd.CommandText = "select * from xy where id = @id and name = @name";
cmd.Parameters.Add["@name", SqlDbType.VarChar);
cmd.Parameters["@name"].Value = txtUsername.Text;
}
else
{
cmd.CommandText = "select * from xy where id = @id";
}
stringtemplate.orgを見てください。 STはあらゆる種類のテキスト構築を可能にし、非常に柔軟性があります。あなたの例では、ランタイムの構築を必要とする唯一のクエリがある場合は
は、STが過剰です。 しかし、私は現在、多くのクエリを持つプロジェクトに取り組んでおり、STは私を幸せにしました。すべてのクエリが単一のファイルに格納され、多くのC#クラス内に分散されていないという事実は、STへの移行を価値のあるものにするには十分です。
- 1. 私はこのコードを持っているASP.NET
- 2. ObjectDataSourceのは、私は、このASP.NETコードを持って
- 3. は、私はこのコードを持って
- 4. は、私はこのコードを持って
- 5. ASP.NET MVCは、私は次のコードを持っているhtmlファイル
- 6. は、私はこのC++のコードを持って、このC++コード
- 7. は、私は次のコード例を持っているñ
- 8. Strutsは、私はこのコードを持っている私の.class
- 9. は、私はこのコードを持っている私のテキストファイル
- 10. 私はこのコードを持って、コンストラクタ
- 11. 私はこのコードを持って
- 12. 名「URLは、」私はasp.netページで、次のコード行持ってasp.net
- 13. 私は次のコードを持っているASP.netのWeb API
- 14. Yiiの例から、私はこのコードを持っているRESTclientアドオンのFirefox
- 15. は、私は例として、コードのこの部分を持って春
- 16. エンティティフレームワーク私は、次のコード(例)を持っている名前
- 17. jQueryのコードは、私はこのコードを持って、 を
- 18. 私は私のコードでこの行を持っている
- 19. 私は私のクライアントアプリケーションでこのコードを持っているXML
- 20. は、私は、このRSpecのコードを持っているRSpecの
- 21. 私はこのコードを持っているこの変数
- 22. 私はこのコードを持っているこの機能
- 23. は、私はこれを持っているのasp.net MVC
- 24. は、私は、このメソッドを持っているASP.net
- 25. は、私はこのコントローラを持っているASP.NET
- 26. 私は、このコード例持つ配列
- 27. はCSS-アコーディオンは、私はこのコードを持っている
- 28. XMLHttpRequestのは、私はこのコードを持っているOPTION
- 29. は、私はこのコードを持っているのpython
- 30. は、私はこのコードを持っているNSMutableArrayの
これは本当に機能していますか? txtUsername.Text> 0 –
はい、それは動作します:D – Attila
@Attila *本当に*?あなたは '.Length'を見逃していないと確信していますか? –