Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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# 无法将数据类型nvarchar转换为数字_C#_Sql_Sql Server_Parameterized Query_Table Valued Parameters - Fatal编程技术网

C# 无法将数据类型nvarchar转换为数字

C# 无法将数据类型nvarchar转换为数字,c#,sql,sql-server,parameterized-query,table-valued-parameters,C#,Sql,Sql Server,Parameterized Query,Table Valued Parameters,我使用以下查询将数据从Excel文件导入SQL Server数据库。Excel文件的所有值都是字符串类型(“在每个单元格之前) 导入时出现此错误。“无法将数据类型nvarchar转换为数字” 如果从导入中删除SalePrice和Price2两列,则导入成功 我的表的数据类型是 CREATE TYPE [dbo].[InventoryType] AS TABLE ( [LocalSKU] [varchar](200) NOT NULL, [ItemName] [varchar](200

我使用以下查询将数据从Excel文件导入SQL Server数据库。Excel文件的所有值都是字符串类型(
在每个单元格之前)

导入时出现此错误。“无法将数据类型nvarchar转换为数字”

如果从导入中删除SalePrice和Price2两列,则导入成功

我的表的数据类型是

CREATE TYPE [dbo].[InventoryType] AS TABLE
(
   [LocalSKU] [varchar](200) NOT NULL,
   [ItemName] [varchar](200) NULL,
   [QOH] [int] NULL,
   [Price] [decimal](19, 4) NULL,
   [Discontinued] [bit] NULL,
   [Barcode] [varchar](25) NULL,
   [Integer2] [int] NULL,
   [Integer3] [int] NULL,
   [SalePrice] [decimal](19, 4) NULL,
   [SaleOn] [bit] NULL,
   [Price2] [decimal](19, 4) NULL
)
GO
我使用的查询是:

SqlCommand sqlcmd = new SqlCommand
   (@"MERGE Inventory AS target
      USING (SELECT
                LocalSKU, ItemName, QOH, Price, Discontinued, 
                Barcode, Integer2, Integer3, SalePrice, SaleOn, Price2 
             FROM @source) AS Source ON (Source.LocalSKU = target.LocalSKU)
      WHEN MATCHED THEN
         UPDATE 
           SET ItemName = source.ItemName,
               Price = source.Price,
               Discontinued = source.Discontinued,
               Barcode = source.Barcode,
               Integer2 = source.Integer2,
               Integer3 = source.QOH,
               SalePrice = source.SalePrice,
               SaleOn = source.SaleOn,
               Price2 = source.Price2;", sqlconn);

SqlParameter param;
param = sqlcmd.Parameters.AddWithValue("@source", dr);
param.SqlDbType = SqlDbType.Structured;
param.TypeName = "dbo.InventoryType";

sqlconn.Open();
sqlcmd.ExecuteNonQuery();
sqlconn.Close();

要记住的一件事是,在抛出错误的给定列中可能有一些无效数据。例如,如果您有一个数字列,并且有字母或格式不正确的数值,则会引发此错误。首先检查单元格中的值是否不正确。这也包括尾随空格或前导空格。

该语句没有插入任何内容-它只是更新现有行。。。。。另外:你没有发布你得到的实际错误@我已经更新了这个问题。是的,它只是在更新。列
QOH
的类型是否可转换为数字类型?请记住,给定列中可能有一些引发错误的无效数据。例如,如果您有一个数字列,并且有字母或格式不正确的数值,则会引发此错误。首先检查单元格中的值是否不正确。这也包括尾随空格或前导空格。@TechieJoe您的答案是正确的。无效数据。谢谢