1

非クエリの呼び出しに問題があります。これを実行すると、「ExecuteNonQuery: CommandText プロパティが初期化されていません」というエラーが表示されます。

        //delete from the database
        OdbcCommand cmdCommand = new OdbcCommand(tSQL, Global.gADOConnection);
        tSQL = "Delete from SEARCH_CRITERIA where CRITERIA_ID = " + iCriteriaID;
        Global.gADOConnection.Open();
        cmdCommand.ExecuteNonQuery();
        Global.gADOConnection.Close();

なぜこのエラーが発生し続けるのかわかりません。誰でも私を助けてもらえますか?

ありがとう。

4

3 に答える 3

3

コンストラクターに渡したtSQL に値を設定しています。OdbcCommandそれはあなたが望んでいたものではないと思います。試す:

string tSQL = "Delete from SEARCH_CRITERIA where CRITERIA_ID = " + iCriteriaID;
using (OdbcCommand cmdCommand = new OdbcCommand(tSQL, Global.gADOConnection))
{
    Global.gADOConnection.Open();
    cmdCommand.ExecuteNonQuery();
    Global.gADOConnection.Close();
}

でも:

  • SQL 自体に値を埋め込むのではなく、パラメーター化された SQL を使用することを強くお勧めします。
  • using最後にステートメントを使用してコマンドを破棄する方法に注意してください
  • また、データベース接続にグローバル変数を使用しないことを強くお勧めします。データベース操作が必要になるたびに新しい接続を作成し、最後に破棄します。

     using (OdbcConnection connection = new OdbcConnection(...))
     {
         connection.Open();
         using (OdbcCommand command = ...)
         {
             command.ExecuteNonQuery();
         }
     }
    

    基礎となるネットワーク接続に関して、接続プールがそれを効率的に処理するようにします。

于 2012-07-23T19:27:28.513 に答える
1

tSQL は cmdCommand の前に配置する必要があります。

tSQL = "Delete from SEARCH_CRITERIA where CRITERIA_ID = " + iCriteriaID;
OdbcCommand cmdCommand = new OdbcCommand(tSQL, Global.gADOConnection);

SQLインジェクションを避けるために、実際にはパラメーターを使用する必要があります。

tSQL = "Delete from SEARCH_CRITERIA where CRITERIA_ID = @CriteriaID";
OdbcCommand cmdCommand = new OdbcCommand(tSQL, Global.gADOConnection);
cmdCommand.Parameters.AddWithValue("@CriteriaID", iCriteriaID);

次に考慮すべきことはusing、リソースを自動的に閉じる括弧です。

于 2012-07-23T19:27:46.523 に答える
0

nullコマンド テキストでコマンドを初期化しています。コマンドを作成する前に tSQL を割り当ててみてください。

var tSQL = "Delete from SEARCH_CRITERIA where CRITERIA_ID = " + iCriteriaID;
OdbcCommand cmdCommand = new OdbcCommand(tSQL, Global.gADOConnection);
Global.gADOConnection.Open();
cmdCommand.ExecuteNonQuery();
Global.gADOConnection.Close();
于 2012-07-23T19:27:53.797 に答える