Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.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# 如何避免T-SQL错误:从DBNull类型到String类型的转换无效_C#_Sql Server_Sql Server 2008_Tsql_Dbnull - Fatal编程技术网

C# 如何避免T-SQL错误:从DBNull类型到String类型的转换无效

C# 如何避免T-SQL错误:从DBNull类型到String类型的转换无效,c#,sql-server,sql-server-2008,tsql,dbnull,C#,Sql Server,Sql Server 2008,Tsql,Dbnull,我使用下面的T-SQL将数据插入到由C构建的应用程序中,有些记录工作正常,但有些记录给出了以下错误 有关调用即时消息的详细信息,请参见此消息的结尾 JIT调试,而不是此对话框 **************异常文本*************System.InvalidCastException:从类型“DBNull”转换为类型 “字符串”无效。在 Microsoft.VisualBasic.CompilerServices.Conversions.ToString对象 价值 MISys.Clien

我使用下面的T-SQL将数据插入到由C构建的应用程序中,有些记录工作正常,但有些记录给出了以下错误

有关调用即时消息的详细信息,请参见此消息的结尾 JIT调试,而不是此对话框

**************异常文本*************System.InvalidCastException:从类型“DBNull”转换为类型 “字符串”无效。在 Microsoft.VisualBasic.CompilerServices.Conversions.ToString对象 价值 MISys.Client.MIUltraDataGrid.MIUltraDataGrid.MIUltraDataGrid_InitializeRobject 发送方,初始值设定为WEVENTARG e Infragistics.Win.UltraWinGrid.InitializeRowEventHandler.InvokeObject 发送方,初始值设定为WEVENTARG e Infragistics.Win.UltraWinGrid.UltraGrid.OnInitializeRowWinInitializeRowEventArgs 注视 Infragistics.Win.UltraWinGrid.UltraGrid.FireEventGridId, 事件参数在 Infragistics.Win.UltraWinGrid.UltraGrid.FireInitializeRowEventArgs 注视 Infragistics.Win.UltraWinGrid.UltraGridRow.FireInitializeRow位于 Infragistics.Win.UltraWinGrid.RowsCollection.FireInitializeRowIList 争吵 Infragistics.Win.UltraWinGrid.RowsCollection.InitNonGroupByRowsIList FireInitializeroWon这些行位于 Infragistics.Win.UltraWinGrid.RowsCollection.SyncRowshellist 边界列表位于 Infragistics.Win.UltraWinGrid.RowsCollection.SyncRows位于 Infragistics.Win.UltraWinGrid.RowsCollection.EnsureRenotDirty位于 Infragistics.Win.UltraWinGrid.RowsCollection.GetEnumerator位于 MISys.Client.MIUltraDataGrid.MIUltraDataGrid.RefreshGrid位于 MISysForms.MIDetailsTemplate.RefreshGridsControl myparent位于 MISysForms.MIDetailsTemplate.RefreshGridsControl myparent位于 MISysForms.MIDetailsTemplate.RefreshGridsControl myparent位于 MISysForms.MIDetailsTemplate.RefreshGridsControl myparent位于 MISysForms.MIDetailsTemplate.Record在更改 MISysForms.MIItemDetails.RecordChanged于 MISysForms.MIDetailsTemplate.GetPreviousRecord位于 MISysForms.MIDetailsTemplate.UltraToolbarsManager\u工具ClickObject 发件人、工具单击事件参数 Infragistics.Win.UltraWinToolbars.UltraToolbarsManager.OnToolClickToolClickEventArgs 注视


例如,询问您的datarow值是否不为null,然后您可以对其进行精细转换:

object Value = dataRow[columnName];
if (Value != DBNull.Value)

例如,询问您的datarow值是否不为null,然后您可以对其进行精细转换:

object Value = dataRow[columnName];
if (Value != DBNull.Value)

您可以使用上面的答案,或者如果您没有访问代码的权限,请将选择更改为插入空白而不是空值,假设您有SQL Server

INSERT INTO [MITESTCO].[dbo].[MIQSUP] ([itemId], [suplProdCode], [suplId])  
SELECT
    IsNull([itemId],''), IsNUll([suplId], ''), ISNull([suplProdCode],'')  
FROM 
    [table 28]   
WHERE  
    [itemId] NOT IN (SELECT [itemId] FROM [MIQSUP]);

您可以使用上面的答案,或者如果您没有访问代码的权限,请将选择更改为插入空白而不是空值,假设您有SQL Server

INSERT INTO [MITESTCO].[dbo].[MIQSUP] ([itemId], [suplProdCode], [suplId])  
SELECT
    IsNull([itemId],''), IsNUll([suplId], ''), ISNull([suplProdCode],'')  
FROM 
    [table 28]   
WHERE  
    [itemId] NOT IN (SELECT [itemId] FROM [MIQSUP]);

其中一列返回NULL值,如堆栈跟踪中所示,调用ToString函数将引发该错误。您可以使用TSQL、ISNULL函数重写SELECT语句

INSERT INTO [MITESTCO].[dbo].[MIQSUP] ([itemId], [suplProdCode], [suplId])  
SELECT
    [itemId], [suplId], ISNULL([suplProdCode],'') as suplProdCode
FROM 
    [table 28]   
WHERE  
    [itemId] NOT IN (SELECT [itemId] FROM [MIQSUP]);

其中一列返回NULL值,如堆栈跟踪中所示,调用ToString函数将引发该错误。您可以使用TSQL、ISNULL函数重写SELECT语句

INSERT INTO [MITESTCO].[dbo].[MIQSUP] ([itemId], [suplProdCode], [suplId])  
SELECT
    [itemId], [suplId], ISNULL([suplProdCode],'') as suplProdCode
FROM 
    [table 28]   
WHERE  
    [itemId] NOT IN (SELECT [itemId] FROM [MIQSUP]);

分享您正在使用的实际代码怎么样?如果您单击“详细信息”,它是否会更具体地告诉您错误来自何处?@TimFreese是的,我在问题的底部添加了问题所在。您发布了一条dotnet错误消息,您向我们显示的唯一代码是查询。您无法从sql获取该错误消息。如果你想找到真正的解决方案,你需要向我们展示dotnet代码。@SeanLange抱歉,我没有访问.Net部分的权限。如何共享你正在使用的实际代码?如果你单击“详细信息”,它是否会更具体地告诉你错误的来源?@TimFreese是的,我在问题的底部添加了问题。您发布了一条dotnet错误消息,您向我们显示的唯一代码是查询。您无法从sql获取该错误消息。如果你想真正有机会找到解决方案,你需要向我们展示dotnet代码。@SeanLange对不起,我没有访问.Net部分的权限