2014-12-04 26 views
-3
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; 
+1

什麼是問題? – Vladimirs 2014-12-04 11:58:51

+0

如果數據不存在,你不能執行'st = dr1 [0] .ToString();'while while while – CodingDefined 2014-12-04 12:04:16

+0

sqldatareader的行總是返回false – user2392626 2014-12-04 12:04:39

回答

0

刪除此行: -

st = dr1[0].ToString(); 

你需要調用Read()方法實際上從DataReader對象讀取日期。

此外,它會更好,如果你將using塊內包裝你的代碼: -

using (SqlDataReader dr1 = cmd.ExecuteReader()) 
{ 
    while (dr1.Read()) 
    { 
     st = dr1[0].ToString(); //With Index 
     st = dr1["ColumnName"].ToString(); //With Column Name 
    } 
} 

更新: 基於您的評論,這是一個插入SP,你試圖閱讀返回值,所以你不能使用SqlDataReader,如果你想返回SP是否成功插入數據,你可以返回狀態碼1successfull insertion & 0失敗或什麼的。然後,您可以閱讀這回這樣的代碼: -

SqlParameter returnParameter = cmd.Parameters.Add("StatusCd", SqlDbType.Int); 
returnParameter.Direction = ParameterDirection.ReturnValue; 
cmd.ExecuteNonQuery(); 
int statusCode = (int)returnParameter.Value; 

但是,如果你想要一個像你提到Successfully Inserted返回文本,你需要添加爲Output parameter因爲SQL只能返回整數值,你就可以檢索該輸出值: -

SqlParameter output = new SqlParameter("@code", SqlDbType.Int); 
output.Direction = ParameterDirection.Output; 
cmd.Parameters.Add(output); 
cmd.ExecuteNonQuery(); 
st = output.Value.ToString(); 

這裏,@code會在你的SP,你會爲設置輸出中的參數:SET @code = 'Insert successfull'

+0

Bro not清楚。你能解釋一下嗎? – user2392626 2014-12-04 12:09:19

+0

@ user2392626 - 我懷疑的是,在'While'循環之後你再次調用'st = dr1 [0] .ToString();'所以這一定是異常的原因。但是,剛剛閱讀你的評論,你剛剛添加了來回測試的目的,是這樣嗎? – 2014-12-04 12:15:26

+0

我也刪除了,但它不是寫着 – user2392626 2014-12-04 12:20:54

相關問題