Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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# 插入数据并选择最后一个id时出错_C#_Sql Server_Sql Insert_Executescalar - Fatal编程技术网

C# 插入数据并选择最后一个id时出错

C# 插入数据并选择最后一个id时出错,c#,sql-server,sql-insert,executescalar,C#,Sql Server,Sql Insert,Executescalar,我想在向表中插入一行数据后获取id,但出现错误: System.InvalidCastException:指定的强制转换无效 这是我的密码 SqlCommand cmd_insert = new SqlCommand("insert into ITM_OrderItem (ITM_Code, ITM_Desc, ORCAT_Desc, ORSCT_Desc, ARCBG_Abbrev, ARCSG_Desc, ARCSC_Code, ARCIM_DerivedFeeItem, OPD_Price

我想在向表中插入一行数据后获取id,但出现错误:

System.InvalidCastException:指定的强制转换无效

这是我的密码

SqlCommand cmd_insert = new SqlCommand("insert into ITM_OrderItem (ITM_Code, ITM_Desc, ORCAT_Desc, ORSCT_Desc, ARCBG_Abbrev, ARCSG_Desc, ARCSC_Code, ARCIM_DerivedFeeItem, OPD_Price, IPD_Price, Tou_Price, App_Status, SITES, CSSUSR_RowId, CSSUSR_DepId, CSSUSR_PosId , CDate, MDate) values('"
                       + dt.Rows[i]["EARCIM_Code"].ToString() + "','"
                       + dt.Rows[i]["EARCIM_Desc"].ToString() + "','"
                       + dt.Rows[i]["EORCAT_Desc"].ToString() + "','"
                       + dt.Rows[i]["EARCIC_Desc"].ToString() + "','"
                       + dt.Rows[i]["EARCBG_Abbrev"].ToString() + "','"
                       + dt.Rows[i]["EARCSG_Desc"].ToString() + "','"
                       + dt.Rows[i]["EARCSC_Desc"].ToString() + "','"
                       + dt.Rows[i]["EARCIM_DerivedFeeItem"].ToString() + "','"
                       + dt.Rows[i]["OPD"].ToString() + "','"
                       + dt.Rows[i]["IPD"].ToString() + "','"
                       + dt.Rows[i]["Tourist"].ToString() + "','"
                       + status_app + "','"
                       + usr_site + "','"
                       + usrID + "','"
                       + Dep_RowId + "','"
                       + Pos_RowId + "','"
                       + Cdate + "','"
                       + Cdate + "') select SCOPE_IDENTITY()", conEMR);

// error on this line
insert_RowId = (Int32)cmd_insert.ExecuteScalar();

非常感谢。

您的表ITM_OrderItem中的identity列似乎没有使用int作为数据类型,我可以猜测它是一个bigint数据类型,如果是这种情况,您应该将代码中的行更改为:

insert_RowId = (Int64)cmd_insert.ExecuteScalar();

另外,请确保在C代码声明中将变量“insert_RowId”的数据类型更改为Int64。

删除数值数据类型的引号,即单引号。请查看SQL注入并使用参数化查询,而不是文本查看您是否介意显示ITM_OrderItem表的架构?我想从insert接收id数据此命令在sql查询中工作正常。表ITM_OrderItem的Identity列的数据类型是什么。Identity列的数据类型是int[ITM_RowId]int Identity 1,1不为NULL,在这种情况下,问题不在于C代码中的数据类型行和转换。现在我可以打赌insert语句无法返回“select SCOPE_IDENTITY”的空值,因此您应该尝试从代码生成插入的T-SQL,在SQL Server Management Studio中运行T-SQL并相应地进行修复。似乎是在insert语句中传递字符数据,其中需要数字数据,反之亦然。如果你能共享表的模式,我肯定能在这方面帮助你。我尝试使用dbug-process并复制cmd来编写sql查询,效果很好。