如何解决如何通过连接到 C++ 中 MySQL ODBC 源的 ADO 查询设置 NULL 列值?
给定一个给定的 MySQL 表
$(group1,group2,group3)
我需要更新给定行的 DESC tabl_foo;
--------------------------------
Field Type Null Key Default Extra
-----------------------------------------------------------------
fooId varchar(15) NO PRI NULL
FooDate date YES MUL NULL
。所以我尝试了这段代码:
FooDate
然而,这失败了
不正确的日期值:第 1 行 query->SQL->Add("UPDATE tbl_foo SET FooDate = :FooDate WHERE fooId = :id"):
// both arguments are AnsiString
query->Parameters->FindParam("id")->Value = FoodId;
query->Parameters->FindParam("FooDate")->Value = FooDate;
query->ExecSQL();
列的“”
事实证明,FooDate
可能是一个空字符串(或 FooDate
),而 MySQL 不喜欢这样。所以,我尝试设置 { data:NULL }
:
Null()
但后来我收到此错误:
参数对象定义不正确。提供的信息不一致或不完整。
应该为 MySQL if (FooDate.IsEmpty())
query->Parameters->FindParam("FooDate")->Value = Null();
else
query->Parameters->FindParam("FooDate")->Value = FooDate;
设置什么值?
解决方法
为了进行更新,系统需要知道参数的类型。它可以从你应用的变体中推导出类型,MySQL 可以为你做一些转换,但最好总是指定数据类型。
所以你需要的是:
if((pParam=query->Parameters->FindParam("FooDate"))!=NULL)
{
pParam->DataType=ftDate;
if(FooDate.IsEmpty())
{
pParam->Value=Null();
}
else
{
pParam->Value=FooDate;
}
}
您可能希望将 FooDate 保留为 TDateTime,但您需要正确检测 NULL 日期。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。