首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理TableAdapter空值

处理TableAdapter空值
EN

Stack Overflow用户
提问于 2012-09-06 12:08:38
回答 2查看 2.4K关注 0票数 1

我在一个TableAdapter中有一个查询,它包装了这个SQL (Oracle SQL,使用':‘代替'@’作为参数化变量),我称之为GetModel()

代码语言:javascript
复制
SELECT MFG_PRODUCT FROM FRAME_NO
WHERE FRM_NO = :FRM_NO

我预料到查询可能返回null值,因此我将列MFG_PRODUCT的null值设置为Null,正如微软http://msdn.microsoft.com/en-us/library/ya91ataz(v=vs.100).aspx中的指导原则所指出的那样

但是,当查询没有返回任何行时,我的应用程序仍然会抛出异常。我该怎么办?

我已经重新构建了整个解决方案,以防代码仍然引用旧的已编译数据集,但仍然没有运气。

编辑:这是代码。当返回值为空时,将引发异常

代码语言:javascript
复制
try
{
    String modelCode = frameAdapter.GetModelCode(txtStdFrameId.Text.Trim()).ToString();
    if(String.IsNullOrEmpty(modelCode)) //Go directly to exception when data is null here
    {
       //Process the data 
    }
}
catch(Exception ex)
{
     //Log error to a text file
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-06 12:28:15

以这种方式将列设置为NULL与空数据行没有任何关系。只有当您至少有一行且该行中的列为NULL时,它才会起作用

对于不返回行的数据,您必须自己处理这种情况

代码语言:javascript
复制
//DataTable
DataTable dt = ds.Fill(..);

//handle no rows 
if(dt.Rows.Count == 0)
{
   //what do you want to do here
}
else
{
   //this dt contains at least one row, now I can use it without any errors/exception
}
票数 1
EN

Stack Overflow用户

发布于 2012-09-06 14:12:49

好了,我找到解决方案了。这是因为该行中的拼写错误:String modelCode = frameAdapter.GetModelCode(txtStdFrameId.Text.Trim()).ToString();

显然,将null转换为触发错误的字符串。应该是这样的:String modelCode = frameAdapter.GetModelCode(txtStdFrameId.Text.Trim());

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12292848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档