2014-12-29 4 views
-3

Я не могу вставить данные в SQL Server с помощью хранимой процедуры с C# - пожалуйста, помогите.Данные не вставляются в базу данных SQL Server

string sqlConnectionString = ConfigurationManager.ConnectionStrings["SQLConnectionString"].ConnectionString; 

using (SqlConnection sqlConnection = new SqlConnection(sqlConnectionString)) 
{ 
    using (SqlCommand command = new SqlCommand("AddFromExcel", sqlConnection)) 
    { 
    command.CommandType = CommandType.StoredProcedure; 
    command.CommandTimeout = 0; 

    try 
    { 
     sqlConnection.Open(); 

     SqlParameter parameter = new SqlParameter(); 

     for (int i = 0; i < dtExport.Rows.Count ; i++) 
     { 
     command.Parameters.Clear(); 
     SqlParameter parameter1 = new SqlParameter(); 
     parameter1.ParameterName = "@FamilyName"; 
     parameter1.SqlDbType = SqlDbType.NVarChar; 
     parameter1.Direction = ParameterDirection.Input; 
     var value = Convert.ToString(dtExport.Rows[i]["Family"]); 
     command.Parameters.AddWithValue("@FamilyName", value); 

     SqlParameter parameter2 = new SqlParameter(); 
     parameter2.ParameterName = "@ExecutionName"; 
     parameter2.SqlDbType = SqlDbType.NVarChar; 
     parameter2.Direction = ParameterDirection.Input; 
     parameter2.Value = Convert.ToString(dtExport.Rows[i]["Execution"]); 
     command.Parameters.AddWithValue("@ExecutionName", value); 

     SqlParameter parameter3 = new SqlParameter(); 
     parameter3.ParameterName = "@VariantCode"; 
     parameter3.SqlDbType = SqlDbType.NVarChar; 
     parameter3.Direction = ParameterDirection.Input; 
     parameter3.Value = Convert.ToString(dtExport.Rows[i]["VariantCode"]); //this is column name in Excel 
     command.Parameters.AddWithValue("@VariantCode", value); 

     SqlParameter parameter4 = new SqlParameter(); 
     parameter4.ParameterName = "@FamilyDenomination"; 
     parameter4.SqlDbType = SqlDbType.NVarChar; 
     parameter4.Direction = ParameterDirection.Input; 
     parameter4.Value = Convert.ToString(dtExport.Rows[i]["Family Denomination"]); 
     command.Parameters.AddWithValue("@FamilyDenomination", value); 

     SqlParameter parameter5 = new SqlParameter(); 
     parameter4.ParameterName = "@ExcecutionDenomination"; 
     parameter4.SqlDbType = SqlDbType.NVarChar; 
     parameter4.Direction = ParameterDirection.Input; 
     parameter4.Value = Convert.ToString(dtExport.Rows[i]["Execution Denomination"]); 
     command.Parameters.AddWithValue("@ExcecutionDenomination", value); 

     SqlParameter parameter6 = new SqlParameter(); 
     parameter4.ParameterName = "@ReleasDatestring"; 
     parameter4.SqlDbType = SqlDbType.NVarChar; 
     parameter4.Direction = ParameterDirection.Input; 
     parameter4.Value = Convert.ToString(dtExport.Rows[i]["Release Date"]); 
     command.Parameters.AddWithValue("@ReleasDatestring", value); 

     SqlParameter parameter7 = new SqlParameter(); 
     parameter7.ParameterName = "@Validfromstring"; 
     parameter7.SqlDbType = SqlDbType.NVarChar; 
     parameter7.Direction = ParameterDirection.Input; 
     parameter7.Value = Convert.ToString(dtExport.Rows[i]["Valid From"]); 
     command.Parameters.Add(parameter7); 

     command.ExecuteNonQuery(); 
     } 
    } 
    catch (SqlCeException ex) 
    { 
     string w = ex.Message.ToString(); 
     //MessageBox.Show("Error", 
     // "Error in Write to .: " 
     // + ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Stop); 
     } 
    } 
    } 
    } 
} 

Здесь хранимая процедура работает нормально, даже если я не получаю никаких ошибок при запуске программы. Но данные не будут вставлены

+1

Вы ничего не делает в блоке поймать. Можете ли вы прокомментировать попытку/уловку, чтобы узнать, есть ли у вас исключения? –

+0

нет, все равно я не получаю никаких исключений, и даже данные не вставлены. –

+2

Проверьте определение параметра. Вы объявляете параметр 5, 6 и 7, но в определении он все еще использует параметр4. Пожалуйста, исправьте код. –

ответ

1

Использование command.Parameters.Add(Parameter_Name) в вашем коде как

for (int i = 0; i < dtExport.Rows.Count ; i++) 
{ 

    command.Parameters.Clear(); 
    SqlParameter parameter1 = new SqlParameter(); 
    parameter1.ParameterName = "@FamilyName"; 
    parameter1.SqlDbType = SqlDbType.NVarChar; 
    parameter1.Direction = ParameterDirection.Input; 
    parameter1.Value = Convert.ToString(dtExport.Rows[i]["Family"]); 
    command.Parameters.Add(parameter1); 


    SqlParameter parameter2 = new SqlParameter(); 
    parameter2.ParameterName = "@ExecutionName"; 
    parameter2.SqlDbType = SqlDbType.NVarChar; 
    parameter2.Direction = ParameterDirection.Input; 
    parameter2.Value = Convert.ToString(dtExport.Rows[i]["Execution"]); 
    command.Parameters.Add(parameter2); 

    SqlParameter parameter3 = new SqlParameter(); 
    parameter3.ParameterName = "@VariantCode"; 
    parameter3.SqlDbType = SqlDbType.NVarChar; 
    parameter3.Direction = ParameterDirection.Input; 
    parameter3.Value = Convert.ToString(dtExport.Rows[i]["VariantCode"]); //this is column name in Excel 
    command.Parameters.Add(parameter3); 

    SqlParameter parameter4 = new SqlParameter(); 
    parameter4.ParameterName = "@FamilyDenomination"; 
    parameter4.SqlDbType = SqlDbType.NVarChar; 
    parameter4.Direction = ParameterDirection.Input; 
    parameter4.Value = Convert.ToString(dtExport.Rows[i]["Family Denomination"]); 
    command.Parameters.Add(parameter4); 

    SqlParameter parameter5 = new SqlParameter(); 
    parameter5.ParameterName = "@ExcecutionDenomination"; 
    parameter5.SqlDbType = SqlDbType.NVarChar; 
    parameter5.Direction = ParameterDirection.Input; 
    parameter5.Value = Convert.ToString(dtExport.Rows[i]["Execution Denomination"]); 
    command.Parameters.Add(parameter5); 


    SqlParameter parameter6 = new SqlParameter(); 
    parameter6.ParameterName = "@ReleasDatestring"; 
    parameter6.SqlDbType = SqlDbType.NVarChar; 
    parameter6.Direction = ParameterDirection.Input; 
    parameter6.Value = Convert.ToString(dtExport.Rows[i]["Release Date"]); 
    command.Parameters.AddWithValue(parameter6); 


    SqlParameter parameter7 = new SqlParameter(); 
    parameter7.ParameterName = "@Validfromstring"; 
    parameter7.SqlDbType = SqlDbType.NVarChar; 
    parameter7.Direction = ParameterDirection.Input; 
    parameter7.Value = Convert.ToString(dtExport.Rows[i]["Valid From"]); 
    command.Parameters.Add(parameter7); 

    command.ExecuteNonQuery(); 


    } 
Смежные вопросы