0

単一のパラメーターを持つ (および変更された) 文字列としてクエリを実行していますが、奇妙な動作が発生しています。コードは次のとおりです。

String cmd = "SELECT RID FROM SCHEMAS 
              WHERE NAMESPACE_PREFIX = '" + prefix + "' AND GENERIC_SCHEMA = 1";

Response.Write(cmd + "<br>");

using (SqlDataReader elementReader = elementDB.executeCommand(cmd))
{
    while (elementReader.Read())
    {
        Response.Write(cmd+ elementReader["RID"].ToString() + "<br>");
    }
}

私が期待すること:

Response.Write2 回実行され、データは同一です。

実際に起こっていること:

elementReader は、プレフィックスの最初の値を「記憶」しているように見えます。「プレフィックス」変数が変更されると、SQL ステートメントの外側の Response.Write は正しく文字列を出力しますが、SQL ステートメントの内側の while ループはまったく実行されません。ただし、'prefi'x が設定された最初の値に戻るたびに、ステートメントは実行されます。

なぜこれが起こっているのか、私は完全に途方に暮れており、助けていただければ幸いです。ありがとう。

4

1 に答える 1

0

最も可能性の高い原因は、同じ NAMESPACE_PREFIX を持つデータベース内の 2 つのレコードです。

そのフィールドに一意のインデックスが必要な場合があります。

于 2012-08-27T04:11:10.433 に答える