对nil和NULL的随想

仙侣步惊云 2004-04-07 04:04:05
在数据库中,Null被定义为“未知的、没有处理的”,而DELPHI和C++中,Null被定义为零,怎样将Delphi/C++中的Nil转化为数据库中的Nil呢?
假定设定某个数据字段可为NULL,并为该字段设定一个外键,在Delphi中设定一TDBComboBox控件与之相连,如果在程序录入界面中未对该字段进行处理,则可将数据(此时为Null)更新至数据库;如对DBComboBox进行了处理后又清空(此时在Delphi中, DBComboBox.Text为’’),更新至数据库时,由于0或’’不是外键关键字段的一个值,数据库提示无法更新。
于是在Tfield中的GetText中或TDBComboBox的Change事件中设定DBComboBox.Text为Nil,由于Delphi中的Nil不是数据库中的NULL,仍然无法将空值更新至数据库。
最后想在数据库中建一个触发器,对输入‘’值直接改写为NULL,由于本人SQL功力有限,无法解决
问题的关键在于DELPHI中没有真正的NULL值。
...全文
214 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
仙侣步惊云 2004-04-08
  • 打赏
  • 举报
回复
多谢alphax,还是用TField.Clear弄好了。
仙侣步惊云 2004-04-07
  • 打赏
  • 举报
回复
自己顶一下
仙侣步惊云 2004-04-07
  • 打赏
  • 举报
回复
设定DBComboBox.Text为NULL,其内容为仍然为nil而非真正的NULL,甚至你马上会看到出现“0”这一结果。
DragonBill 2004-04-07
  • 打赏
  • 举报
回复
设定DBComboBox.Text为NULL
仙侣步惊云 2004-04-07
  • 打赏
  • 举报
回复
ADO
alphax 2004-04-07
  • 打赏
  • 举报
回复
你的是那一组数据库存取控件?

bde?ado?ibx?dbx?这些都可以啊
pandarus 2004-04-07
  • 打赏
  • 举报
回复
up
仙侣步惊云 2004-04-07
  • 打赏
  • 举报
回复
TField.Clear();试过,不行,Clear()后TField内容仍然是nil
alphax 2004-04-07
  • 打赏
  • 举报
回复
TField.Clear();

5,388

社区成员

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

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