Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.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# 指定的强制转换无效。。在sql数据记录中_C#_Sql Server_Asp.net Mvc_Stored Procedures - Fatal编程技术网

C# 指定的强制转换无效。。在sql数据记录中

C# 指定的强制转换无效。。在sql数据记录中,c#,sql-server,asp.net-mvc,stored-procedures,C#,Sql Server,Asp.net Mvc,Stored Procedures,我使用以下代码将列表值插入到表中。 我将此链接用于执行此过程 private List GetHotelList(List List,string RequestRef) { List datatable=新列表(); SqlMetaData[]SqlMetaData=新的SqlMetaData[12]; sqlMetaData[0]=新的sqlMetaData(“HotelID”,SqlDbType.Int); sqlMetaData[1]=新的sqlMetaData(“RequestRefe

我使用以下代码将列表值插入到表中。 我将此链接用于执行此过程

private List GetHotelList(List List,string RequestRef)
{
List datatable=新列表();
SqlMetaData[]SqlMetaData=新的SqlMetaData[12];
sqlMetaData[0]=新的sqlMetaData(“HotelID”,SqlDbType.Int);
sqlMetaData[1]=新的sqlMetaData(“RequestReference”,SqlDbType.VarChar,15);
sqlMetaData[2]=新的sqlMetaData(“FromDate”,SqlDbType.DateTime);
sqlMetaData[3]=新的sqlMetaData(“ToDate”,SqlDbType.DateTime);
sqlMetaData[4]=新的sqlMetaData(“Nights”,SqlDbType.Int);
sqlMetaData[5]=新的sqlMetaData(“MealPlan”,SqlDbType.VarChar,10);
sqlMetaData[6]=新的sqlMetaData(“LastUpdatedBy”,SqlDbType.VarChar,50);
sqlMetaData[7]=新的sqlMetaData(“LastUpdateDate”,SqlDbType.DateTime);
sqlMetaData[8]=新的sqlMetaData(“状态”,SqlDbType.Int);
sqlMetaData[9]=新的sqlMetaData(“StarCategory”,SqlDbType.Int);
sqlMetaData[10]=新的sqlMetaData(“CreatedDateTime”,SqlDbType.DateTime);
sqlMetaData[11]=新的sqlMetaData(“CreatedUserId”,SqlDbType.VarChar,15);
foreach(列表中的var信息)
{
SqlDataRecord行=新的SqlDataRecord(sqlMetaData);
int?hotelId=gethotelid(info.HotelName);
行设置值(hotelId、RequestRef、info.FromDate、info.ToDate、info.Nights、info.MealPlan、info.StarCategory、info.Status、info.lastUpdateBy、DateTime.Now、DateTime.Now、info.CreatedUserId);
datatable.Add(行);
}
返回数据表;
}
但我在第行中遇到“指定的强制转换无效”错误。SetValues()。我能得到任何线索吗


谢谢。

您没有向我们展示在本例中至关重要的SQL服务器部分。请使用您要插入的相应SQL Server代码表更新您的问题,并且您使用的存储过程将是最好的


您可能正在进行一些值转换,而
CAST
(函数不正确。

row.SetValues方法需要对象

试试这个

row.SetValues(new object[]{hotelId, RequestRef, info.FromDate, info.ToDate, info.Nights, info.MealPlan, info.StarCategory, info.Status, info.LastUpdatedBy, DateTime.Now, DateTime.Now, info.CreatedUserId});

看起来值的顺序已关闭。具体而言,您有:

sqlMetaData[5] = new SqlMetaData("MealPlan", SqlDbType.VarChar, 10);
sqlMetaData[6] = new SqlMetaData("LastUpdatedBy", SqlDbType.VarChar, 50);
sqlMetaData[7] = new SqlMetaData("LastUpdatedDate", SqlDbType.DateTime);
sqlMetaData[8] = new SqlMetaData("Status", SqlDbType.Int);
sqlMetaData[9] = new SqlMetaData("StarCategory", SqlDbType.Int);
sqlMetaData[10] = new SqlMetaData("CreatedDateTime", SqlDbType.DateTime);
但是当你插入

info.MealPlan,
info.StarCategory,
info.Status,
info.LastUpdatedBy,
DateTime.Now,
DateTime.Now
请注意StarCategory、Status和LastUpdatedBy是如何不合适的。

将hotelId设置为可空是最好的主意。有一个我们可以实际检查的参数会有很大帮助,但乍一看,您似乎是以不同的顺序向元数据数组传递参数,具体来说,您似乎是在传递
Status
位于可能会出现
LastUpdateDate
的位置。
info.MealPlan,
info.StarCategory,
info.Status,
info.LastUpdatedBy,
DateTime.Now,
DateTime.Now