C# 指定的强制转换无效
我的代码检查数据库中的更改,然后通过web服务向客户端发送更新 我让发送消息给客户机的部分工作正常,因为我打电话检查数据库中的更改。现在我已经添加了检查数据库更改的部分,我得到了以下错误 在调试代码时,错误会指向代码底部的异常,因此我不知道错误来自何处,也无法修复它 如有任何建议,将不胜感激C# 指定的强制转换无效,c#,exception,webservice-client,.net,C#,Exception,Webservice Client,.net,我的代码检查数据库中的更改,然后通过web服务向客户端发送更新 我让发送消息给客户机的部分工作正常,因为我打电话检查数据库中的更改。现在我已经添加了检查数据库更改的部分,我得到了以下错误 在调试代码时,错误会指向代码底部的异常,因此我不知道错误来自何处,也无法修复它 如有任何建议,将不胜感激 SendInvUpdate.InvServices.UpdateRatePackagesRequest ur = new SendInvUpdate.InvServices.UpdateRatePa
SendInvUpdate.InvServices.UpdateRatePackagesRequest ur = new SendInvUpdate.InvServices.UpdateRatePackagesRequest();
SendInvUpdate.InvServices.UpdateRatePackagesOperationResponse or = new SendInvUpdate.InvServices.UpdateRatePackagesOperationResponse();
protected void Page_Load(object sender, EventArgs e)
{
try
{
string connStr = ConfigurationManager.ConnectionStrings["bb"].ConnectionString;
SqlConnection Con = new SqlConnection(connStr);
Con.Open();
SqlCommand cmd = new SqlCommand("invpush_PollForAvailableChanges", Con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter NewSysChangeVersionParam = new SqlParameter("@NewSysChangeVersion", SqlDbType.Int);
NewSysChangeVersionParam.Value = (object)NewSysChangeVersionParam ?? DBNull.Value;
NewSysChangeVersionParam.Direction = ParameterDirection.InputOutput;
NewSysChangeVersionParam.SqlDbType = SqlDbType.BigInt;
SqlDataReader sdr = cmd.ExecuteReader();
InventoryPushSubscriptionRecord rec = new InventoryPushSubscriptionRecord();
while (sdr.Read())
{
rec.InventoryPushSubId = sdr.GetInt32(0);
rec.CMName = sdr.GetString(1);
rec.NotifUrl = sdr.GetString(2);
rec.Options = sdr.GetString(3);
rec.LastSysChangeVersion = sdr.IsDBNull(4)?(long?)null:sdr.GetInt32(4);
}
if(!sdr.NextResult()) throw new System.Exception("Expected Result set 1 for InventoryChangeRecord");
InventoryChangeRecord inrec = new InventoryChangeRecord();
while (sdr.Read())
{
inrec.InventoryPushSubId= sdr.GetInt32(0);
inrec.SysChangeVersion=sdr.IsDBNull(1)?(long?)null:sdr.GetInt32(1);
inrec.InvDate=sdr.GetDateTime(2);
inrec.ResId=sdr.GetInt32(3);
inrec.RoomType=sdr.GetString(4);
inrec.InvCount=sdr.GetInt32(5);
inrec.ResName=sdr.GetString(6);
}
sdr.Close();
sdr.Dispose();
if (NewSysChangeVersionParam != null)
{
int ResId;
Int64 ResoId;
ResortId = inrec.ResId;
SqlDataAdapter sda = new SqlDataAdapter("Select BID,RId from BBTest.bbtest.tblResMapping where BId=@ResId",Con);
SqlParameter resId = new SqlParameter("@ResId", ResId);
sda.SelectCommand.Parameters.Add(resId);
DataSet ds = new DataSet();
sda.Fill(ds, "tblresmapping");
if (ds.Tables[0].Rows.Count > 0)
{
ResoId = Convert.ToInt32(ds.Tables[0].Rows[0]["ResonlineId"]);
}
if (ds.Tables[0].Rows.Count != 0)
{
Int64 RatePackageId;
SqlDataAdapter sqlda = new SqlDataAdapter("Select BId,BBRoom,ResRatePackageID from tblResRatePackages where BID =@ResortId", Con);
SqlParameter resI = new SqlParameter("@RId", resId);
sqlda.SelectCommand.Parameters.Add(resI);
DataSet dt = new DataSet();
sqlda.Fill(dt, "tblResRatePackages");
if (dt.Tables[0].Rows.Count > 0)
{
RatePackageId = Convert.ToInt64(dt.Tables[0].Rows[0]["ResRatePackageID"]);
Int64 HID = ResId;
Int64 HRID = RatePackageId;
SendInvUpdate.InvServices.UpdateRatePackagesRequest request = new SendInvUpdate.InvServices.UpdateRatePackagesRequest();
request.HotelId = account.HotelId;
int avail = inrec.InvCount;
DateTime frodte = inrec.InvDate;
int NoofRatePackages = 3;
UpdateRatePackageRequest[] RatePackages = new UpdateRatePackageRequest[NoofRatePackages];
string res;
request.RatePackages = new UpdateRatePackageRequest[NoofRatePackages];
request.RatePackages = RatePackages;
for (int i = 0; i < NoofRatePackages; i++)
{
UpdateRatePackageRequest rp = new UpdateRatePackageRequest();
request.RatePackages[i] = rp;
rp.RatePackageId = HRID;
rp.Rates = new RateDetails[NoofRatePackages];
for (int j = 0; j < NoofRatePackages; j++)
{
RateDetails rd = new RateDetails();
rp.Rates[j] = rd;
rd.Availability = avail;
rd.AvailabilityApplicationType = SendInvUpdate.InvServices.AvailabilityApplicationType.SET;
rd.FromDate = frodte;
// rd.ToDate = todte;
}
}
SendInvUpdate.InvServices.InventoryServiceClient isc = new SendInvUpdate.InvServices.InventoryServiceClient();
or = isc.UpdateRatePackages(request);
res = or.Results.ToString();
}
}
}
}
catch (Exception ex)
{
throw (ex);
}
}
}
SendInvUpdate.InvServices.updateratepackesrequest ur=new SendInvUpdate.InvServices.updateratepackesrequest();
SendInvUpdate.InvServices.UpdateRatePackagesOperationResponse或=新建SendInvUpdate.InvServices.UpdateRatePackagesOperationResponse();
受保护的无效页面加载(对象发送方、事件参数e)
{
尝试
{
字符串connStr=ConfigurationManager.ConnectionString[“bb”].ConnectionString;
SqlConnection Con=新的SqlConnection(connStr);
Con.Open();
SqlCommand cmd=新的SqlCommand(“invpush\u PollForAvailableChanges”,Con);
cmd.CommandType=CommandType.storedProcess;
SqlParameter NewSysChangeVersionParam=新的SqlParameter(@NewSysChangeVersion”,SqlDbType.Int);
NewSysChangeVersionParam.Value=(对象)NewSysChangeVersionParam??DBNull.Value;
NewSysChangeVersionParam.Direction=参数Direction.InputOutput;
NewSysChangeVersionParam.SqlDbType=SqlDbType.BigInt;
SqlDataReader sdr=cmd.ExecuteReader();
InventoryPushSubscriptionRecord rec=新的InventoryPushSubscriptionRecord();
while(sdr.Read())
{
rec.inventorypussubid=sdr.GetInt32(0);
rec.CMName=sdr.GetString(1);
rec.NotifUrl=sdr.GetString(2);
rec.Options=sdr.GetString(3);
rec.LastSysChangeVersion=sdr.IsDBNull(4)?(长?)null:sdr.GetInt32(4);
}
如果(!sdr.NextResult())抛出新的System.Exception(“InventoryChangeRecord的预期结果集1”);
InventoryChangeRecord inrec=新的InventoryChangeRecord();
while(sdr.Read())
{
inrec.InventoryPushSubId=sdr.GetInt32(0);
inrec.SysChangeVersion=sdr.IsDBNull(1)?(长?)null:sdr.GetInt32(1);
inrec.InvDate=sdr.GetDateTime(2);
inrec.ResId=sdr.GetInt32(3);
inrec.RoomType=sdr.GetString(4);
inrec.InvCount=sdr.GetInt32(5);
inrec.ResName=sdr.GetString(6);
}
sdr.Close();
sdr.Dispose();
if(NewSysChangeVersionParam!=null)
{
国际剩余;
Int64共振;
RestorId=inrec.ResId;
SqlDataAdapter sda=新SqlDataAdapter(“从BBTest.BBTest.tblResMapping中选择BID,RId,其中BID=@ResId”,Con);
SqlParameter resId=新的SqlParameter(“@resId”,resId);
sda.SelectCommand.Parameters.Add(resId);
数据集ds=新数据集();
sda.填充(ds,“TBLRESMAPING”);
如果(ds.Tables[0].Rows.Count>0)
{
ResoId=Convert.ToInt32(ds.Tables[0].行[0][“ResonlineId]”);
}
if(ds.Tables[0].Rows.Count!=0)
{
Int64-RatePackageId;
SqlDataAdapter sqlda=新SqlDataAdapter(“从tblResRatePackages中选择BId、BBRoom、ResRatePackageID,其中BId=@RestorId”,Con);
SqlParameter resI=新的SqlParameter(“@RId”,resId);
sqlda.SelectCommand.Parameters.Add(resI);
数据集dt=新数据集();
sqlda.Fill(dt,“tblResRatePackages”);
如果(dt.Tables[0].Rows.Count>0)
{
RatePackageId=Convert.ToInt64(dt.Tables[0]。行[0][“ResRatePackageID”]);
Int64 HID=剩余;
Int64 HRID=额定包装ID;
SendInvUpdate.InvServices.UpdateratePackageRequest请求=新建SendInvUpdate.InvServices.UpdateratePackageRequest();
request.HotelId=account.HotelId;
int avail=inrec.InvCount;
DateTime frodte=inrec.InvDate;
int noofradepackages=3;
UpdateRatePackageRequest[]RatePackages=新的UpdateRatePackageRequest[NoofRatePackages];
字符串res;
request.RatePackages=new UpdateRatePackageRequest[NoofRatePackages];
request.ratepacks=ratepacks;
for(int i=0;itry {
...
}
catch(Exception ex) // catch all exceptions
{
throw ex; // throw the same exception, removing the old stack trace
}
try {
...
}
catch(Exception ex) // catch all exceptions
{
throw; // throw the last caught exception, keeping the stack trace
}
private static DataSet dataset_test(string sql)
{
DataSet ds = new DataSet();
using (OracleConnection objConn = new OracleConnection(connectionstring))
{
OracleCommand objCmd = new OracleCommand();
objCmd.Connection = objConn;
objCmd.CommandText = sql;
objCmd.CommandType = CommandType.Text;
try
{
objConn.Open();
OracleDataAdapter adapter = new OracleDataAdapter(objCmd);
adapter.ReturnProviderSpecificTypes = true;
adapter.Fill(ds);
}
catch (Exception)
{
throw;
}
objConn.Close();
return ds;
}
}