关于Delphi中执行insert语句

kingkingxy 2002-09-26 04:49:16
我的Delphi连接到一个DBF数据库,数据库中的各字段都为memo类型。
我想在里面插入一条数据;

可是我用AdOQuery1.add(sqls);
sqls是连接的insert语句。
可是好像插入的时候,每一个字段不能超过256个字节,如果我的内容超过256个字符应该怎么办!

sqls:
insert into table1 values('乙脑合剂','生石膏','清热泻火,通腑化瘀,豁痰开窍,定惊熄风。','乙型脑炎。症见:高热惊厥,昏迷。','方中用石膏退热除烦,清泻阳明实热为君;生地、赤芍、丹皮清热凉血为臣;知母养阴清热为佐;双钩、僵蚕、全蝎止痉熄风;菖蒲化浊开窍为使;加大黄清泄大肠之热,助石膏一臂之力,给邪以出路。全方共奏清热泻火、通腑化瘀、豁谈开窍、定惊熄风之功。','我们将白虎汤、犀角地黄汤、止痉散有机结合组成乙脑合剂,其功效是清热泻火,通腑化瘀,豁痰开窍,定惊熄风。此方重用石膏是治疗本病的关键。临床统计发现,治疗组用药后,高热、抽搐、昏迷持续天数明显较对照组短说明乙脑合剂有较好的降温作用和止痉作用。并有有效地控制高热,从而阴断惊厥和呼衰之间的恶性循环。本法为中药汤剂由口服改直肠点滴,具有设备简单,操作容易,便于推广,降温之目的。用此方治疗')
...全文
446 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingkingxy 2002-09-26
  • 打赏
  • 举报
回复
有道理:
我感觉可能是因为是 Delphi 本身字符串长度的限制;
最后我没有采用执行insert的方法;而是使用
Query1中加入insert语句;

Query1.insert;
Query1.append的方法终于解决了。

sqls:='';
sqls:='select * from '+_databasename+' where 1=2';
form1.edit1.text:=sqls;
form1.ADOQuery1.Close;
form1.ADOQuery1.SQL.Clear;
form1.AdOQuery1.SQL.Add(sqls);
form1.AdOQuery1.open;
Pmoinfo:=beginmoinfo;
form1.ADOQuery1.Insert;
i:=0;
repeat
form1.ADOQuery1.FieldList[i].AsString:=pmoinfo.pointFieldS.FieldS;
pmoinfo:=pmoinfo.pointmoinfo;
i:=i+1;
until pmoinfo=nil;
try
form1.ADOquery1.Append;
except
form1.ADOQuery1.Close;
pmoinfo:=beginmoinfo;
repeat
pmoinfo.pointFieldS.FieldS:='';
pmoinfo:=pmoinfo.pointmoinfo;
until pmoinfo=nil;
Pmoinfo:=beginmoinfo;
main_info:='';
fields:='';
readstates:=Wilenomal;
end;

结账
佛的光辉 2002-09-26
  • 打赏
  • 举报
回复
什么不是垃圾
xiaokang520 2002-09-26
  • 打赏
  • 举报
回复
我对数据库的评价:

oracle ---- 好大一坨垃圾
DB2 ---- 垃圾一大坨
sybase ---- 一坨垃圾
mysql ---- 坨坨是垃圾
SQL SERVER --- 不知道是不是垃圾
access..fox... ----真是垃圾 ,(地球人都知道...)
hmily1688 2002-09-26
  • 打赏
  • 举报
回复
@_@晚了,我的分还不加啊
xiaohepc 2002-09-26
  • 打赏
  • 举报
回复
分行:
tmpQuery.SQL.Add('SELECT ItemRequiredMoney.ItemChargeID, CodeTable.CodeDescription AS ChargeRuleType, ' +
'KindChargeRule.ChargeRuleID AS ChargeRuleID FROM CodeTable INNER JOIN CodeTableCategory ON ' +
'CodeTable.CodeTableID = CodeTableCategory.CodeTableID INNER JOIN ItemRequiredMoney ON ' +
'CodeTable.CodeID = ItemRequiredMoney.ChargeRuleType LEFT OUTER JOIN KindChargeRule ON ' +
'ItemRequiredMoney.ItemChargeID = KindChargeRule.ItemChargeID WHERE ' +
'(ItemRequiredMoney.ItemFlowID = ''' + AFlowID + ''') AND (CodeTableCategory.CodeTableName = ''收费规则类型'')');
tweety 2002-09-26
  • 打赏
  • 举报
回复
他这个语句编译肯定不过,因为一个字符串太长了(超过255)。需要象前面几位说的分段加。
sql.add('......');
sql.add('......');


----------------------------------------------
riff ur life
slyse 2002-09-26
  • 打赏
  • 举报
回复
是不是设计数据库的时候你设置了最长不超过256个字节?
l_xiaofeng 2002-09-26
  • 打赏
  • 举报
回复
我靠,太让我惊讶了.没办法,分行写吧
SQL.ADD('');
SQL.ADD('');
iamltd 2002-09-26
  • 打赏
  • 举报
回复
不能insert超过256的字符是因为字符型不能超过256
按照楼上说的用dbmemo好了
drizzt123 2002-09-26
  • 打赏
  • 举报
回复
别把这么长的字符串写作一行。 当编辑器中一行字符长度超过256,delphi编译都通不过。
长字符串写作几行短串相加就没问题了。
hongqi162 2002-09-26
  • 打赏
  • 举报
回复
同意用dbmemo绑定!
上海老李 2002-09-26
  • 打赏
  • 举报
回复
用DBMEMO绑定试试!

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧