C# 当不存在数据时,读取数据的尝试无效
在C# 当不存在数据时,读取数据的尝试无效,c#,asp.net,C#,Asp.net,在while循环后删除此行:- Values Not Being Stored to Database cmd = new SqlCommand("ImportExcel", con); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@UserCategory", SqlDbType.NVarChar, 100).Value = i
while
循环后删除此行:-
Values Not Being Stored to Database
cmd = new SqlCommand("ImportExcel", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@UserCategory", SqlDbType.NVarChar, 100).Value = imp.UserCategory;
cmd.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 200).Value = imp.CompanyName;
cmd.Parameters.Add("@PrimaryContact", SqlDbType.NVarChar, 200).Value = imp.PrimaryContact;
cmd.Parameters.Add("@Title", SqlDbType.NVarChar, 50).Value = imp.Title;
cmd.Parameters.Add("@FirstName", SqlDbType.NVarChar, 100).Value = imp.FirstName;
cmd.Parameters.Add("@LastName", SqlDbType.NVarChar, 100).Value = imp.LastName;
cmd.Parameters.Add("@LeadIndustryType", SqlDbType.NVarChar, 100).Value = imp.IndustruType;
cmd.Parameters.Add("@SupplierService", SqlDbType.NVarChar).Value = imp.ServiceCategory;
cmd.Parameters.Add("@Designation", SqlDbType.NVarChar, 100).Value = imp.Designation;
// cmd.Parameters.Add("@AnnualRevenue", SqlDbType.NVarChar, 50).Value = ContactsObj.AnnualRevenue;
cmd.Parameters.Add("@PhoneCountryCode", SqlDbType.NVarChar, 50).Value = imp.PhoneCountryCode;
cmd.Parameters.Add("@PhoneNumber", SqlDbType.NVarChar, 50).Value = imp.PhoneNumber;
cmd.Parameters.Add("@MobileCountryCode", SqlDbType.NVarChar, 50).Value = imp.MobileCountryCode;
cmd.Parameters.Add("@MobileNumber", SqlDbType.NVarChar, 50).Value = imp.MobileNumber;
cmd.Parameters.Add("@Email", SqlDbType.NVarChar, 200).Value = imp.Email;
if (!String.IsNullOrEmpty(imp.EmailOption))
{
cmd.Parameters.Add("@EmailOption", SqlDbType.Bit).Value = imp.EmailOption;
}
else
{
cmd.Parameters.Add("@EmailOption", SqlDbType.Bit).Value = DBNull.Value;
}
if (!String.IsNullOrEmpty(imp.OfferAlertReceive))
{
cmd.Parameters.Add("@OfferAlertReceive", SqlDbType.Bit).Value = imp.OfferAlertReceive;
}
else
{
cmd.Parameters.Add("@OfferAlertReceive", SqlDbType.Bit).Value = DBNull.Value;
}
//cmd.Parameters.Add("@SecondaryEmail", SqlDbType.NVarChar, 200).Value = imp.SecondaryEmail;
cmd.Parameters.Add("@SkypeID", SqlDbType.NVarChar, 200).Value =imp.SkypeID;
cmd.Parameters.Add("@Fax", SqlDbType.NVarChar, 50).Value = imp.Fax;
cmd.Parameters.Add("@Website", SqlDbType.NVarChar, 200).Value = imp.Website;
cmd.Parameters.Add("@PresentAddressLine1", SqlDbType.NVarChar, 200).Value =imp.PresentAddressLine1;
cmd.Parameters.Add("@PresentAddressLine2", SqlDbType.NVarChar, 200).Value =imp.PresentAddressLine2;
cmd.Parameters.Add("@PresentCity", SqlDbType.NVarChar, 200).Value =imp.PresentCity;
cmd.Parameters.Add("@PresentState", SqlDbType.NVarChar, 100).Value = imp.PresentState;
cmd.Parameters.Add("@PresentCountry", SqlDbType.NVarChar, 100).Value = imp.PresentCountry;
cmd.Parameters.Add("@PresentZipCode", SqlDbType.NVarChar, 50).Value = imp.PresentZipCode;
cmd.Parameters.Add("@PermanentAddressLine1", SqlDbType.NVarChar, 200).Value = imp.PermanentAddressLine1;
cmd.Parameters.Add("@PermanentAddressLine2", SqlDbType.NVarChar, 200).Value = imp.PermanentAddressLine2;
cmd.Parameters.Add("@PermanentCity", SqlDbType.NVarChar, 200).Value = imp.PermanentCity;
cmd.Parameters.Add("@PermanentState", SqlDbType.NVarChar, 100).Value = imp.PermanentState;
if (!String.IsNullOrEmpty(imp.PermanentCountry))
{
cmd.Parameters.Add("@PermanentCountry", SqlDbType.NVarChar, 100).Value = imp.PermanentCountry;
}
else
{
cmd.Parameters.Add("@PermanentCountry", SqlDbType.NVarChar, 100).Value = DBNull.Value;
}
cmd.Parameters.Add("@PermanentZipCode", SqlDbType.NVarChar, 50).Value = imp.PermanentZipCode;
if (!String.IsNullOrEmpty(imp.GroupName))
{
cmd.Parameters.Add("@OfferAlertType", SqlDbType.NVarChar, 100).Value = imp.OfferAlertType;
}
else
{
cmd.Parameters.Add("@OfferAlertType", SqlDbType.NVarChar, 100).Value = DBNull.Value;
}
if (!String.IsNullOrEmpty(imp.GroupName))
{
cmd.Parameters.Add("@GroupName", SqlDbType.NVarChar, 100).Value = imp.GroupName;
}
else
{
cmd.Parameters.Add("@GroupName", SqlDbType.NVarChar, 100).Value = DBNull.Value;
}
cmd.Parameters.Add("@LeadSource",SqlDbType.NVarChar,100).Value=imp.LeadSource;
cmd.Parameters.Add("@Description", SqlDbType.NVarChar, 300).Value = imp.Description;
cmd.Parameters.Add("@CreatedBy", SqlDbType.NVarChar, 100).Value = imp.CreatedBy;
cmd.Parameters.Add("@ip", SqlDbType.NVarChar, 50).Value = imp.ip;
con.Open();
SqlDataReader dr1 = cmd.ExecuteReader();
//dr1 = cmd.ExecuteReader();
string st = string.Empty;
while (dr1.Read())
{
st = dr1[0].ToString();
}
st = dr1[0].ToString();
return st;
您需要调用Read()
方法从DataReader
对象中实际读取日期
此外,如果您使用块将代码包装在中,效果会更好:-
st = dr1[0].ToString();
更新:
根据您的评论,这是一个Insert SP,您试图读取返回值,因此无法使用SqlDataReader
,如果您想返回SP是否成功插入数据,您可以返回状态代码,如1
,用于成功插入
&0
,用于失败或其他情况。然后,您可以像这样读取此返回代码:-
using (SqlDataReader dr1 = cmd.ExecuteReader())
{
while (dr1.Read())
{
st = dr1[0].ToString(); //With Index
st = dr1["ColumnName"].ToString(); //With Column Name
}
}
但是,如果您想返回前面提到的成功插入的文本
,则需要将其添加为输出参数
,因为SQL只能返回整数值,因此您可以将此输出值检索为:-
SqlParameter returnParameter = cmd.Parameters.Add("StatusCd", SqlDbType.Int);
returnParameter.Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
int statusCode = (int)returnParameter.Value;
在这里,@code将是SP中的输出参数,您可以将其设置为:set@code='Insert successfull'
如果数据不存在,则无法执行st=dr1[0]。ToString()代码>外部while loopsqldatareader has rows始终返回false我也在while循环外部执行了它,但显示了相同的错误Bro不清楚。你能吗explain@user2392626-我怀疑的是,从之后的代码中,当循环时,您再次调用st=dr1[0].ToString()代码>所以这一定是异常的原因。但是,看看你的评论,你只是出于测试目的添加了它,是吗?我也删除了它,但它不是WOrking@user2392626-好的。您确定此SP正在返回数据吗?请运行SQL探查器
并进行检查,还请使用返回的实际列名而不是索引尝试一次。已更新列名代码。我已检查其SP重新调整值。但是读卡器并没有读取数据来插入它
SqlParameter output = new SqlParameter("@code", SqlDbType.Int);
output.Direction = ParameterDirection.Output;
cmd.Parameters.Add(output);
cmd.ExecuteNonQuery();
st = output.Value.ToString();