给数据值字段赋空值

zhangpuqing 2007-12-28 11:29:31
最近在写一个程序在delphi中使用如下语句
query1.sql.add('insert into a (b,c) values (null,null)')
这句话是能通过的但改成
query1.sql.add('insert into a (b,c) values (:p_b,:p_c)');
query1.parambyname('p_b').value:=null;
query1.parambyname('p_c').value:=null;
就通不过,应该怎么写呢.
...全文
184 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zhangpuqing 2007-12-30
我后来又试了试,用ACCESS+ADO的方式都能行的.
回复
zhangpuqing 2007-12-29
怪了,难道是BUG?不会呀,从报错的对话框看不像是BUG
回复
LSZERP 2007-12-29
这样写在SQLSERVER2000中是可以的
query1.sql.add('insert into a (b,c) values (:p_b,:p_c)');
query1.parambyname('p_b').value:=null;
query1.parambyname('p_c').value:=null;
回复
simonhehe 2007-12-28
sql中和delphi中的null的用法是有区别的
你的第一句是执行sql语句,后边的是pascal语句了
你的标题是空值,那么就是'',null不是空值的意思
回复
coll119 2007-12-28
query1.sql.add('insert into a (b,c) values (:p_b,:p_c)');
query1.parambyname('p_b').value:='';
query1.parambyname('p_c').value:='';
回复
wj198555 2007-12-28
jf
回复
zhangpuqing 2007-12-28
试过的,不行呀,我用的是INTERBASE的数据库,如果直接写
insert into a (b,c) values (null,null)是没问题的,关键是用parambyname('a').value:=null
就不行了,提示要报错说值为空.但我的字段是设置为允许为空的.
回复
cjrj2008 2007-12-28
procedure TForm1.Button1Click(Sender: TObject);
begin
with adoquery1 do
begin
close;
sql.Clear ;
sql.Text:='insert into jx(user_id,user_name)values(:user_id,:user_name)';
// Parameters.ParamByName('user_id').Value:='';
Parameters.ParamByName('user_id').Value:=null;
Parameters.ParamByName('user_name').Value:='f';
ExecSQL ;
end;
end;
用null或''到数据库的值是不同的 楼主你试下 这是我测试的代码 没有问题
回复
hsmserver 2007-12-28
3楼说的对
用insert into a (b,c) values (null,null)就可以了
回复
zhangpuqing 2007-12-28
因为我那个字段 是数值型,我用STRTOINT('')也不行。
回复
zhangpuqing 2007-12-28
我用''试过的,不行。
回复
发帖
数据库相关
创建于2007-08-02

2451

社区成员

Delphi 数据库相关
申请成为版主
帖子事件
创建了帖子
2007-12-28 11:29
社区公告
暂无公告