2014-12-29 86 views
-3

我无法使用C#中的存储过程将数据插入到SQL Server中 - 请帮助。数据未插入到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

你不是真的这样做在catch块东西。你能否注释try/catch来查看是否有任何异常? –

+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(); 


    } 
相关问题