在数据库中,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值。
假定设定某个数据字段可为NULL,并为该字段设定一个外键,在Delphi中设定一TDBComboBox控件与之相连,如果在程序录入界面中未对该字段进行处理,则可将数据(此时为Null)更新至数据库;如对DBComboBox进行了处理后又清空(此时在Delphi中, DBComboBox.Text为’’),更新至数据库时,由于0或’’不是外键关键字段的一个值,数据库提示无法更新。
于是在Tfield中的GetText中或TDBComboBox的Change事件中设定DBComboBox.Text为Nil,由于Delphi中的Nil不是数据库中的NULL,仍然无法将空值更新至数据库。
最后想在数据库中建一个触发器,对输入‘’值直接改写为NULL,由于本人SQL功力有限,无法解决
问题的关键在于DELPHI中没有真正的NULL值。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货