急:最EASY的SQL语句:怎么会有问题???(20分)

  • 主题发起人 主题发起人 sweetychild
  • 开始时间 开始时间
S

sweetychild

Unregistered / Unconfirmed
GUEST, unregistred user!
以下字段,除 项目名称是CHAR(36)类型外均为INTEGER类型,程序运行到EXECUTE时
监视INSORDER语句似乎一切正常,但是一旦要EXECUTE就会系统报‘INSERT INTO 语句语法错’
insorder:='insert into 报表 (序号,日期,项目名称,苹果1,苹果2) values('''+IntToStr(n)+''','+da+',';
insorder:=insorder+''+za+','''+IntToStr(b1)+''','''+IntToStr(b2)+''')';
c.Execute(insorder);




WHY???!!!
 
Integers shouldn't have single quote.

Try this:

insorder:='INSERT INTO 报表 (序号,日期,项目名称,苹果1,苹果2) ';
insorder:=insorder + 'VALUES('+IntToStr(n)+','+da+ ',';
insorder:=insorder + '''+za+'','+IntToStr(b1) + ','+IntToStr(b2)+')';
 
Try This
insorder:='insert into 报表(序号,日期,项目名称,苹果1,苹果2)';
insorder:=insorder+' values (:a1,:a2,:a3,:a4,:a5)';
parambyname('a1').asinteger:=
parambyname('a2').datetime:=
parambyname('a3').asstring:=
parambyname('a4').asinteger:=
parambyname('a5').asinteger:=
 
两种办法都不行,还是报语法错误啊!!!
 
1. are you using ADO or BED?

2. Try to see if you can insert the same record in your database, not through
Delphi interface.

3. You might have some combine Primay key, which stop you inserting new record,
so check the table design please.
 
[:)]建议使用citybug的方法!我最怕那么多的 ''''' 了! 一不留神肯定挂了 [:D]
假如你的主键没有重复的话,建议继续试试SQl
在 Database菜单中Explore 中试验SQL看看如何?
------------------------------
delphi脚本:
insorder:='INSERT INTO 报表 (序号,日期,项目名称,苹果1,苹果2) values (:a1,:a2,:a3,:a4,:a5)';
....................
parambyname('a1').asstring:='your_integer';
parambyname('a2').asstring:='your_integer';
parambyname('a3').asstring:='your_string';
parambyname('a4').asstring:='your_integer';
parambyname('a5').asstring:='your_integer';

try it ! [:)]
 
parambyname是什么,怎么系统说没定义啊?
 
执行之前先showmessage看看Sql语句格式是否正确!
insorder:='INSERT INTO 报表 (序号,日期,项目名称,苹果1,苹果2) ';
insorder:=insorder + 'VALUES('+IntToStr(n)+','+ '''' + DateTimeToStr(da) + '''' + ',';
insorder:=insorder + ''''+ za +'''' + ','+ IntToStr(b1) + ','+IntToStr(b2)+')';
 
是 Query.parambyname('a1').asstring:='your_integer'; [:)]
 
你的写得实在太乱了,后面大家的建议写得就清楚多了。
你用ADO,C是哪个ADO对象的实例?
一般我是用adoquery的SQL的OPEN METHODS
like this
代码:
var
  sqlstr:string;  
  myquery:tadoquery;
begin
  myquery:=tadoquery.create;
  sqlstr:='insert into 报表(序号,日期,项目名称,苹果1,苹果2)';
  sqlstr:=sqlstr+' '+za+','''+IntToStr(b1)+''','''+IntToStr(b2)+''')';
  myquery.sql.text:=sqlstr;
  myquery.sql.open;
end;
因为目前的刚重装的系统,暂没装DELPHI,以上代码未测试过,不知可不可行,理论上
应该可以:)

 
c是ADOCONNECTION
GANQUAN的我试过了,不对哦
 
不对?
那应该是时间字段出的问题,你用什么数据库?
 
select要用open的,insert等要用exec的!
 
'"'变为'"'
 
ADOCONNECTION能这样用吗? 这是连接数据库的

ADOConnection.Execute()--------------
function Execute(const CommandText: WideString; ExecuteOptions: TExecuteOptions = []): _RecordSet; overload;
procedure Execute(const CommandText: WideString; var RecordsAffected: Integer; ExecuteOptions: TExecuteOptions = [eoExecuteNoRecords]); overload;
 
可以这样用的,不过感觉很不好。
 
还没有这样用过呢 [:)]
那就写''''' 吧~ 对应好就可以的
 
老兄,你到底想干什么,如果是想将数据插入到表中的话有很多方法可以实现,不别吊
....在一棵树上啊,直接在表中插入数据不就结了吗?试试下面的如何:
with adotable1 do
begin
try
append;
fieldbyname('序号').asingteger:=n;
fieldbyname('日期').asinteger:=da;//有必要用integer定义日期?直接用日期型不行?
fieldbyname('项目名称').asstring:='za';
fieldbyname('苹果1').asinteger:=b1;
fielbyname('苹果2').asinteger:=b2;
post;
showmessage('插入数据成功!');
except
cancel;
showmessage('插入数据失败!');
end;
end;
 
恩好了,这个SQL真是烦死人,花了一中午好不容易调通了,原来并不是语句本身的问题[:)]
下次一定要把找到DELPHI中SQL语法规则把它贴上来。谢谢大家,辛苦你们了:)
老样子,分不多答谢笑文一篇,轻松一下把[^][^][^]

无聊的N种表现
发呆。换一种肢势发呆,换一件衣服发呆,换一种头脑继续发呆。 ??吸烟。吸油烟,吸大烟,大多人吸香烟。 ??说话。对墙,对人,对自己,还有一条狗。全都是废话,也许狗听的更明白一些。 ??上课。无聊到没地方去,有时候也因为无聊的太坚强了,给自己上上刑。 ??闲逛。有时候用腿,有时候用手,或者都用跟动物一起爬,但没动物爬的快。 ??吃饭。维持无聊能生存下去的无聊,因为无聊所以大多时候做的格外卖力。 ??睡觉。一种昏迷的等待,有时候清醒也尽量把自己打昏迷,继续的努力等待。 ??交友。在这里,在那里,结识一些随时可以出卖自己的人。并且乐此不疲的结识着。经常出现情绪上波动的无聊。 ??激动。莫名其妙的被周围无聊的氛围所感动,造成双眼排泄出大量的氯化纳液体,有时候也用鼻子排除。 ??吹牛。把偷来的故事安在自己身上讲给别人听。也帮别人一起打发时间。 ??喝咖啡。小资总这么干,把自己周围无聊的的气氛装修的很诗意。 ??思考。摆给别人看的肢势。-------看,那人的生命多有意义。 ??骂街。把自己打扮成个愤青的模样,理由充分的到人堆里显配一翻自己的无聊。 ??跳舞。偶尔因为厌倦静态的无聊而癫痫一会儿的动态的无聊。 ??结婚。把两个无聊的个体转换成一种无聊的社会团体。在这个无聊的团体中两个奴隶互相指责着对方的无聊----实在没别的做。 ??喝彩。陈词滥调的回音。看别人跟自己活的不一样,不叫声好,还能干吗呀? ??喝酒。鼓励和帮助你活下去的麻醉剂。人多的时候还很体面。但大多醒来后加重了自己的无聊,可见副作用很大。 ??嫉妒。一种无能所流露出来的无聊。 ??接吻。两个无聊者无聊到无聊的时候而无聊的交换唾液。 ??写日记。按时间顺序记录自己的日子,写者不会记录那些让自己脸红的事情。这样他就能顺理成章的骗自己活的很有意义。 ??起哄。因为看不清自己的无聊所以在旁边对别人指手画脚。就如同我。

 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
821
import
I
S
回复
0
查看
951
SUNSTONE的Delphi笔记
S
后退
顶部