哪位大俠幫我這個菜鳥把那個sql語句改正確呢,最好能說明那一堆的引號是怎麼回事
adoquery1.Close;
adoquery1.sql.Clear;
adoquery1.sql.Text:='insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values('''+Edit1.text+''','''+Edit2.text+''','''+Edit3.text+''','''+Edit4.text+''',''+strtofloat(edit5.text)+'',''+strtofloat(edit6.text)+'')'; adoquery1.Open;
adoquery1.Close;
adoquery1.sql.Clear;
adoquery1.sql.Text:='insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values('''+Edit1.text+''','''+Edit2.text+''','''+Edit3.text+''','''+Edit4.text+''',''+strtofloat(edit5.text)+'',''+strtofloat(edit6.text)+'')'; adoquery1.Open;
解决方案 »
- DBGrid的一个简单问题
- edit控件如何换行? (***特急,在线等待***)
- 我想在程序中把一个包含有图片的文件倒在我的richedit里,可是图片没倒出来,问,是不是有其它什么控件可以倒出rtf文件的?
- 要删除窗体上的某个组件时,与之相关联的代码如何同时清除???
- 如何忽略异常继续程序运行?
- 急寻:谁有Delphi6 Sp2的升级补丁的下载地址。
- 如何把delphi5的程序移植到delphi6,如何解决vcl的版本问题?
- 难道Delphi2009的泛型竟然存在这样big的bug??!!(一位伤心的D迷)
- 请问怎么往ini文件中加一个section。
- 谈谈Delphi/C++ Builder和Visual Basic的本质区别吧
- RadioGroup的项怎样水平排列?
- 打印一行记录后如何不走纸
erro converting data type varchar to float
adoquery1.sql.Clear;
adoquery1.sql.Text:='insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values('''+Edit1.text+''','''+Edit2.text+''','''+Edit3.text+''','''+Edit4.text+''','+edit5.text+',edit6.text';
adoquery1.ExecSQL;
adoquery1.sql.Clear;
adoquery1.sql.Text:='insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values('''+Edit1.text+''','''+Edit2.text+''','''+Edit3.text+''','''+Edit4.text+''',''+strtofloat(edit5.text)+'',''+strtofloat(edit6.text)+'')'; adoquery1.ExecSQL;
adoquery1.Close;
adoquery1.sql.Clear;
adoquery1.sql.Text:='insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values('''+Edit1.text+''','''+Edit2.text+''','''+Edit3.text+''','''+Edit4.text+''','+edit5.text+','+edit6.text;
adoquery1.ExecSQL;
strtofloat(edit5.text)+'','+edit6.text)';
而且你的操作也有问题,在进行联接字符串时竟把FLOAT型和字符串联接了
adoquery1.Close;
adoquery1.sql.Clear;
adoquery1.sql.Text:='insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values(''''//这里
+Edit1.text+''','''+Edit2.text+''','''+Edit3.text+''','''+Edit4.text+''','+edit5.text+','+edit6.text;
adoquery1.ExecSQL;
这是没有返回值进行更新时的可用,而OPEN是有返回值,主要是SELECT用
怎麼把括號也刪了呢 ?TO hongqi162(失踪的月亮)
你只是把OPEN改成EXECSQL了,編譯結果還是erro converting data type varchar to float
adoquery1.sql.Clear;
adoquery1.sql.Text:='insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values('''+Edit1.text+''','''+Edit2.text+''','''+Edit3.text+''','''+Edit4.text+''','+edit5.text+','+edit6.text+')';
adoquery1.ExecSQL;
Delphi中规定:字符串中若存在字符“'”为了区别于字符串的边界字符“'”,在写该字符串时用“''”表示一个单引号;
告诉你个办法,数两个 + 之间的单引号,如果为奇数,就一定写错了。
begin
Close;
sql.Clear;
sql.add('insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values);
sql.add(QuotedStr(Edit1.text)+',');
sql.add(QuotedStr(Edit2.text)+',');
sql.add(QuotedStr(Edit3.text)+',');
sql.add(QuotedStr(Edit4.text)+',');
sql.add(QuotedStr(Edit5.text)+',');
sql.add(QuotedStr(Edit6.text)+',');
ExecSQL;
end;
在sql语句中没有什么数字或字符串的概念,都是以字符串处理的,所以按照sql语句的格式要在edit.text上加上引号,另外如果是insert的话应该用ExecSQL提交比较好。
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) ');
adoquery1.sql.add('values (:a1,:a2,:a3,:a4,:a5,:a6)');
adoquery1.Parameters.parambyname('a1').value:=edit1.text;
adoquery1.Parameters.parambyname('a2').value:=edit2.text;
adoquery1.Parameters.parambyname('a3').value:=edit3.text;
adoquery1.Parameters.parambyname('a4').value:=edit4.text;
adoquery1.Parameters.parambyname('a5').value:=strtofloat(edit5.text);
adoquery1.Parameters.parambyname('a6').value:=strtofloat(edit6.text);
adoquery1.open;
那能夠就我那段代碼進行修改嗎
begin
Close;
sql.Clear;
sql.add('insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values (');
sql.add(QuotedStr(Edit1.text)+',');
sql.add(QuotedStr(Edit2.text)+',');
sql.add(QuotedStr(Edit3.text)+',');
sql.add(QuotedStr(Edit4.text)+',');
sql.add(QuotedStr(Edit5.text)+',');
sql.add(QuotedStr(Edit6.text)+')');
ExecSQL;
end;
对不起,刚才有两处括号写错了。现在改过来了。
adoquery1.sql.Clear;
adoquery1.sql.Text:='insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values(:p1,:p2,:p3,:p4,:p5,:p6)'
adoquery1.Parameters.ParamByName(p1).Value:=Edit1.text;
adoquery1.Parameters.ParamByName(p2).Value:=Edit2.text;
adoquery1.Parameters.ParamByName(p3).Value:=Edit3.text;
adoquery1.Parameters.ParamByName(p4).Value:=Edit4.text;
adoquery1.Parameters.ParamByName(p5).Value:=strtofloat(edit5.text);
adoquery1.Parameters.ParamByName(p6).Value:=strtofloat(edit6.text);
adoquery1.ExecSQL;
这样就不用管什么单引号了!
編譯錯誤提示;
?用程序目前操作所使用的值的?型不正確
adoquery1.sql.Clear;
adoquery1.sql.Text:='insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values(:p1,:p2,:p3,:p4,:p5,:p6)'
adoquery1.Parameters.ParamByName('p1').Value:=Edit1.text;
adoquery1.Parameters.ParamByName('p2').Value:=Edit2.text;
adoquery1.Parameters.ParamByName('p3').Value:=Edit3.text;
adoquery1.Parameters.ParamByName('p4').Value:=Edit4.text;
adoquery1.Parameters.ParamByName('p5').Value:=strtofloat(edit5.text);
adoquery1.Parameters.ParamByName('p6').Value:=strtofloat(edit6.text);
adoquery1.ExecSQL;
这样就不用管什么单引号了!
?用程序目前操作所使用的值的?型不正確
是我對storage表的數據類型定義錯誤嗎//?
字段对应的类型是什么啊???
PName是名稱,不超過10個漢字
PScale是規格,比如M8*10,不允許漢字
PQuat是數量
pprice是價格
adoquery1.sql.Clear;
adoquery1.sql.Text:='insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values(:p1,:p2,:p3,:p4,:p5,:p6)'
adoquery1.Parameters.ParamByName('p1').Value:=strtoint(Edit1.text);
adoquery1.Parameters.ParamByName('p2').Value:=Edit2.text;
adoquery1.Parameters.ParamByName('p3').Value:=Edit3.text;
adoquery1.Parameters.ParamByName('p4').Value:=strtoint(Edit4.text);
adoquery1.Parameters.ParamByName('p5').Value:=edit5.text;
adoquery1.Parameters.ParamByName('p6').Value:=strtofloat(edit6.text);
adoquery1.ExecSQL;
adodataset1.commandtext:='select * from aaa where a='+#39+'abc'+#39;
与
adodataset1.commandtext:='select * from aaa where a='+''''+'abc'+''''; 等价
我觉得前者比后者可读性强
顺便说一声:要给分的话,先单击管理,然后输入密码,分别给每个人给分!