0

DBExpressを使用SQL.TEXTするという、2つのステートメントを回避するために、変数を使用してクエリを初期化する習慣を身に付けました。SQL.Clear; SQL.Add( );

新しい小さなプロジェクトにdbGoを使用すると、次のようになります。

SQL.CommandText := 'INSERT INTO LeaveClass (id,name,color,status) VALUES (1,''Joe'',255,''Ok'')';
ExecSql;

このコマンドは構文エラーで中断します。しかし、使用する場合:

SQL.Clear;
SQL.Add( 'INSERT INTO LeaveClass (id,name,color,status) VALUES (1,''Joe'',255,''Ok'')' );
ExecSql;

それはうまくいきます!さて、私はこの問題に追いつき、その方法を見つける前に、しばらく時間を無駄にしました。どのようなエラーがありますか?割り当てを介して行わないdbGo.ADOQUERY.Sql.Clear深いクリーニングを行う可能性があります。dbGo.ADOQUERY.SQL.CommandText変。コマンドはありますか?

4

1 に答える 1

4

CommandText実際には、SELECTデータ (レコードセット) を返す操作またはその他の操作に対してのみ機能します。ExecSQLor INSERT/DELETEタイプの操作用には設計されていません。

ADOQuery.SQL.Text代わりに単に使用してください:

ADOQuery1.SQL.Text := 'INSERT INTO LeaveClass (id,name,color,status) VALUES (1,''Joe'',255,''Ok'')';
ADOQuery1.ExecSQL;
ADOQuery1.Close;

プロパティを直接設定すると、Text以前にあったものが自動的に置き換えられ、 の必要がなくなりClearます。

于 2012-11-29T23:16:40.970 に答える