插入数据并选择最后一个ID时出错

时间:2014-07-09 04:33:57

标签: 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, 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();

非常感谢你。

1 个答案:

答案 0 :(得分:0)

表ITM_OrderItem中的标识列似乎不使用 int 作为数据类型,我可以猜测它是 bigint 数据类型,如果您应该将代码中的行更改为:

insert_RowId = (Int64)cmd_insert.ExecuteScalar();

另外,请确保更改变量的数据类型' insert_RowId '在C#代码声明中 Int64