起步软件技术论坛-X3

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: dynasty0628

[[结贴]数据库insert 错误

[复制链接]
 楼主| 发表于 2009-9-16 15:09:47 | 显示全部楼层
回10楼
测试了一下,直接写代码还真是没有问题。但是如果写成函数调用的形式就有问题了。
先在一个公共资源集中建立了一个TMAIL类。定义如下:
TMail = class(TObject)
    private
    public
      static procedure SendHTMLMail(const ReceiverID, Title, Content: string);
  end;


static procedure TMail.SendHTMLMail(const ReceiverID, Title, Content: string);
var
  lQuery: TQuery;
const
   insSQL = 'Insert into TTEXTMAIL(FRECEIVERID,FTITLE,FCONTENT,FFLAG, FMAILTYPE) values (:ReceiverID, :Title, :Content,0,''HTML'')';
begin
    lQuery:= TQuery.Create(nil);
    try
      lQuery.ConnectionString:= 'DATABASEURL=Biz:\SYSTEM\SYSTEM.DATABASE';
      lQuery.CommandText:= insSQL;
      lQuery.Params.ParamByName('ReceiverID').AsString := ReceiverID;
      lQuery.Params.ParamByName('Title').AsString := Title;
      lQuery.Params.ParamByName('Content').AsString := Content;
      lQuery.Execute;
    finally
      lQuery.Free;
    end;
end;

在功能中调用的时候就出上面问题了。
在功能中调用的代码:
procedure TMainForm.Button2Click(Sender: TObject);
begin
     TMAIL.SendHTMLMail('aaaaaa','test',memo1.Text);
end;
回复 支持 反对

使用道具 举报

发表于 2009-9-16 15:58:11 | 显示全部楼层
您用sql的方式就行了,参数赋值有问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-16 16:52:59 | 显示全部楼层
但是直接用SQL也有问题啊。
http://bbs.justep.com/forum.php?mod=viewthread&tid=29858
回复 支持 反对

使用道具 举报

发表于 2009-9-16 16:57:58 | 显示全部楼层
那个是因为里面有关键字。具体为什么参数赋不了这么长的长度,我们还没有找到个原因。
你也可以用
dataset.append;
dataset.fieldbyname.asstring:=value;
方式赋值
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-16 17:23:59 | 显示全部楼层
ok,结贴吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-16 01:38 , Processed in 0.043311 second(s), 13 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表