0

接続を破棄/閉じるために、「using」コマンドを使用していくつかの SQL 接続を行っています。using コマンド内から文字列にアイテムを渡すと、接続が閉じられたり破棄されたりしてもアイテムは残りますか?

もしそうなら、後で使用できるようにアイテムを破棄するのではなく、文字列に保持するための最良の方法は何ですか.

4

3 に答える 3

0

あなたはいくつかの概念を台無しにしていると思います。SQL クエリを作成するときは、次のような文字列を使用して作成する 2 つのオプションがあります。

"Select from " + TableName + " where " + ColumnName + "=" + ColumnValue ...

ひどい!次のようなパラメータを使用する必要があります。

"Select from " + "TableName + " where " + ColumnName + "=@Value"

そして、SqlParameterを使用して目的の値を挿入した後。

どちらの場合も、実際の値の有効期間は SQL 文字列とは関係ありません。値の有効期間は、その値を保持する変数の使用方法によって異なります。

お役に立てれば。

于 2012-05-04T10:47:39.800 に答える
0

私の理解が正しければ、コマンドのパラメーターとして渡されたオブジェクトということですか? 私の知る限り、コマンドが破棄されたときにそれらは破棄されません。それらが正しく破棄されていることを確認する最も簡単な方法は、手動でSqlCommand.Parameters.

たとえば、次のコードを使用できます。

if (command.Parameters != null)
{
    foreach (object parameter in command.Parameters)
    {
        IDisposable disposableParameter = parameter as IDisposable;
        if (disposableParameter != null)
        {
            disposableParameter.Dispose();
        }
    }
}
于 2012-05-04T10:46:04.597 に答える
0

文字列は常に値渡しされます。したがって、私があなたの質問を正しく理解していれば、あなたの文字列はそのままにしておく必要があります。using ステートメントは、コマンドのみを破棄します。

于 2012-05-04T11:13:35.193 に答える