Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 处理TableAdapter空值_C#_.net_Dataset - Fatal编程技术网

C# 处理TableAdapter空值

C# 处理TableAdapter空值,c#,.net,dataset,C#,.net,Dataset,我在一个TableAdapter中有一个查询,它包装了这个SQL(Oracle SQL,对参数化变量使用“:”而不是“@”),我称之为GetModel() 我预计查询可能会返回空值,因此我将列MFG_PRODUCTnull值设置为null,正如Microsoft的此指南所指出的那样 然而,当查询没有返回任何行时,我的应用程序仍然抛出异常。我该怎么办 我重新构建了整个解决方案,以防代码仍然引用旧的已编译数据集,但仍然不走运 编辑:这是代码。当返回值为null时引发异常 try { Str

我在一个TableAdapter中有一个查询,它包装了这个SQL(Oracle SQL,对参数化变量使用“:”而不是“@”),我称之为
GetModel()

我预计查询可能会返回空值,因此我将列
MFG_PRODUCT
null值设置为
null
,正如Microsoft的此指南所指出的那样

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

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

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

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
}

以这种方式将列设置为
NULL
与空数据行无关。仅当您至少有一行且该行中的列为
NULL

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

//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
}

以这种方式将列设置为
NULL
与空数据行无关。仅当您至少有一行且该行中的列为
NULL

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

//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
}

好的,我找到了解决办法。这是因为这一行的打字错误:
String modelCode=frameAdapter.GetModelCode(txtStdFrameId.Text.Trim()).ToString()

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

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

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

引发了哪些异常?异常中包含哪些详细信息?如何处理返回的行?是否仅当数据没有行时才会发生这种情况是的,仅当返回的数据没有行时才会发生这种情况。异常是
System.NullReferenceException:Object reference未设置为对象的实例。
如果(String.IsNullOrEmpty(modelCode))
无法引发异常,则该行
无法引发异常。请在代码中放置断点以了解引发异常的确切位置-它可能是
frameAdapter.GetModelCode()
引发了哪些异常?异常中包含哪些详细信息?如何处理返回的行?是否仅当数据没有行时才会发生这种情况是的,仅当返回的数据没有行时才会发生这种情况。异常是
System.NullReferenceException:Object reference未设置为对象的实例。
如果(String.IsNullOrEmpty(modelCode))
无法引发异常,则该行
无法引发异常。请在代码中放置断点以了解引发异常的确切位置-它可能是
frameAdapter.GetModelCode()
查询在dataset中设置为单值返回函数,因此它不会返回datatable对象,因为参数是主键。您仍然需要检查是否至少有一行。当您的数据库不返回任何内容时,就没有可访问的内容,您会得到一个Null异常。这是来自
.Net
。如果NULL来自您的数据库,您将获得DBNull.value值,该值不会在C中引发异常#如果该解释不够,那么您需要发布代码当tableadapter返回值为String时,如何检查返回的行数?使用
If(String.IsNullOrEmpty(returned_value))
。你为什么不发代码。这将使帮助变得更容易查询在dataset中设置为单值返回函数,因此它不会返回datatable对象,因为参数是主键。您仍然需要检查是否至少有一行。当您的数据库不返回任何内容时,就没有可访问的内容,您会得到一个Null异常。这是来自
.Net
。如果NULL来自您的数据库,您将获得DBNull.value值,该值不会在C中引发异常#如果该解释不够,那么您需要发布代码当tableadapter返回值为String时,如何检查返回的行数?使用
If(String.IsNullOrEmpty(returned_value))
。你为什么不发代码。这将使帮助更容易