3

BDE Paradox を使用して、Delphi で SQL ステートメントを挿入したいと考えています。

value_a := 0,123;
value_b := 0,234;
value_c := 0,345;
insert into mst_value values (value_a, value_b, value_c);

デバッグ後に「無効なSQLパラメータ」のようなエラーが表示され、次のようなSQLの完全な構文が表示されます

insert into mst_value values (0,123, 0,234, 0,345) 

formatfloat('#.###コントロール パネルの地域設定を英語に変更した後、SQL パラメータは正しいため、これは , value_a), ...`を使用してフォーマットします。通貨または数値の形式は 123,123,123.00 のように、123,123,123,123.00 ではなく 123,123,123,123.00 のような形式で 10 進数を書式設定するにはどうすればよいですか。前にありがとう...

4

3 に答える 3

2

formatFloat 関数を呼び出す前に、Delphi の変数ThousandsSeparatorDecimalSeparatorに適切な値を設定できます。

FormatFloat( "$##.000", value_a );
于 2012-07-14T10:15:39.683 に答える
1

私はこれについてアリオクと一緒です。代わりに、パラメーター化されたクエリを使用する必要があります。これにより、DB エンジンがフォーマットを処理できるようになります。たとえば、次のようになります。

value_a := 0,123; 
value_b := 0,234; 
value_c := 0,345; 

Query.SQL.Text := 'insert into mst_value values (:value_a, :value_b, :value_c)'; 
Query.ParamByName('value_a').AsFloat := value_a;
Query.ParamByName('value_a').AsFloat := value_b;
Query.ParamByName('value_a').AsFloat := value_c;
Query.ExecSQL;
于 2012-07-18T23:24:00.893 に答える
1

どうやってそのような文字列を作るのですか? "mst_value 値 (0,123, 0,234, 0,345) に挿入"

誰もがあなたのプログラムに侵入することを可能にする SQL インジェクションが必要です。

代わりに TQuery.Params を使用し、データ型を厳密にチェックしてください。

http://issuetracker.delphi-jedi.org/view.php?id=5916のコメントでこれに関する詳細な推論

于 2012-07-18T14:04:50.170 に答える