我想使用BDE Paradox在Delphi中创建Insert SQL Statement
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('#.###
,value_a)格式化它,...`它仍然使用逗号,在将控制面板上的区域设置更改为英语后, SQL参数是正确的,这是因为货币或数字格式就像123,123,123.00,所以,我如何格式化十进制数,但来自另一个国家,例如印度尼西亚,格式为123,123,123,123.00而不是123.123.123,00。谢谢......
答案 0 :(得分:2)
在调用formatFloat函数之前,请尝试这种方式 可以为Delphi的变量ThousandsSeparator和DecimalSeparator设置适当的值:
FormatFloat( "$##.000", value_a );
答案 1 :(得分:1)
你怎么做这样的字符串? “插入mst_value值(0,123,0,234,0,345)”
它正在寻求SQL注入,这将允许任何人闯入你的程序。
使用TQuery.Params代替,使用严格的数据类型检查。
的评论中对此进行了更多推理答案 2 :(得分:1)
我和Arioch在一起。您应该使用参数化查询。这将让数据库引擎为您处理格式化,例如:
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;