接続を破棄/閉じるために、「using」コマンドを使用していくつかの SQL 接続を行っています。using コマンド内から文字列にアイテムを渡すと、接続が閉じられたり破棄されたりしてもアイテムは残りますか?
もしそうなら、後で使用できるようにアイテムを破棄するのではなく、文字列に保持するための最良の方法は何ですか.
接続を破棄/閉じるために、「using」コマンドを使用していくつかの SQL 接続を行っています。using コマンド内から文字列にアイテムを渡すと、接続が閉じられたり破棄されたりしてもアイテムは残りますか?
もしそうなら、後で使用できるようにアイテムを破棄するのではなく、文字列に保持するための最良の方法は何ですか.
あなたはいくつかの概念を台無しにしていると思います。SQL クエリを作成するときは、次のような文字列を使用して作成する 2 つのオプションがあります。
"Select from " + TableName + " where " + ColumnName + "=" + ColumnValue ...
ひどい!次のようなパラメータを使用する必要があります。
"Select from " + "TableName + " where " + ColumnName + "=@Value"
そして、SqlParameterを使用して目的の値を挿入した後。
どちらの場合も、実際の値の有効期間は SQL 文字列とは関係ありません。値の有効期間は、その値を保持する変数の使用方法によって異なります。
お役に立てれば。
私の理解が正しければ、コマンドのパラメーターとして渡されたオブジェクトということですか? 私の知る限り、コマンドが破棄されたときにそれらは破棄されません。それらが正しく破棄されていることを確認する最も簡単な方法は、手動でSqlCommand.Parameters
.
たとえば、次のコードを使用できます。
if (command.Parameters != null)
{
foreach (object parameter in command.Parameters)
{
IDisposable disposableParameter = parameter as IDisposable;
if (disposableParameter != null)
{
disposableParameter.Dispose();
}
}
}
文字列は常に値渡しされます。したがって、私があなたの質問を正しく理解していれば、あなたの文字列はそのままにしておく必要があります。using ステートメントは、コマンドのみを破棄します。