Я хочу переместить некоторые данные из файла Excel в мою базу данных. Я использую C# это мой код:переместить некоторые данные из excel в sql
//conecting to DB
SqlConnection sqlcon = new SqlConnection("Data Source=.;Initial Catalog=ghalamchi;Integrated Security=True");
SqlCommand SqlCmd = new SqlCommand();
SqlCmd.Connection = sqlcon;
SqlCmd.CommandType = CommandType.StoredProcedure;
SqlCmd.CommandText = "SP_AddStudent";
int counter = 0;
int i = 21;
{
SqlCmd.Parameters.Add("@id", SqlDbType.Char, 20).Value = Ds.Tables[0].Rows[i][0].ToString();
SqlCmd.Parameters.Add("@name", SqlDbType.NVarChar, 50).Value = Ds.Tables[0].Rows[i][1].ToString();
SqlCmd.Parameters.Add("@family", SqlDbType.NVarChar, 80).Value = Ds.Tables[0].Rows[i][2].ToString();
SqlCmd.Parameters.Add("@codeM", SqlDbType.Char, 15).Value = Ds.Tables[0].Rows[i][3].ToString();
//SqlCmd.Parameters.Add("@city", SqlDbType.NVarChar, 30).Value = txb_city.Text;
//SqlCmd.Parameters.Add("@street", SqlDbType.NVarChar, 40).Value = txb_street.Text;
SqlCmd.Parameters.Add("@Addres", SqlDbType.NVarChar, 150).Value = Ds.Tables[0].Rows[i][4].ToString();
SqlCmd.Parameters.Add("@telephon", SqlDbType.NChar, 15).Value = Ds.Tables[0].Rows[i][5].ToString();
SqlCmd.Parameters.Add("@mobile", SqlDbType.NChar, 15).Value = Ds.Tables[0].Rows[i][6].ToString();
SqlCmd.Parameters.Add("@rabet1", SqlDbType.NChar, 15).Value = Ds.Tables[0].Rows[i][7].ToString();
SqlCmd.Parameters.Add("@rabet2", SqlDbType.NChar, 15).Value = Ds.Tables[0].Rows[i][8].ToString();
SqlCmd.Parameters.Add("@SchoolName", SqlDbType.NVarChar, 50).Value = Ds.Tables[0].Rows[i][9].ToString();
SqlCmd.Parameters.Add("@avg", SqlDbType.Char, 6).Value = Ds.Tables[0].Rows[i][10].ToString();
SqlCmd.Parameters.Add("@returnValue", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
sqlcon.Open();
SqlCmd.ExecuteNonQuery();
if (SqlCmd.Parameters["@returnValue"].Value.ToString() == "1")
counter++;
sqlcon.Close();
}
в этом коде, читать specefice строку, декларировать с переменной "I". она работает правильно. когда я использую для(), для чтения всех строк файла Excell, этот код содержит ошибку это ошибка:
Процедуру или функцию SP_AddStudent указали слишком много аргументов ,
я думаю, что произошла эта ошибка, потому что скорость дб низка, и она не может читать писать все строки быстро
for (int i = 0; i < Ds.Tables[0].Rows.Count; i++)
{
SqlCmd.Parameters.Add("@id", SqlDbType.Char, 20).Value = Ds.Tables[0].Rows[i][0].ToString();
SqlCmd.Parameters.Add("@name", SqlDbType.NVarChar, 50).Value = Ds.Tables[0].Rows[i][1].ToString();
SqlCmd.Parameters.Add("@family", SqlDbType.NVarChar, 80).Value = Ds.Tables[0].Rows[i][2].ToString();
SqlCmd.Parameters.Add("@codeM", SqlDbType.Char, 15).Value = Ds.Tables[0].Rows[i][3].ToString();
//SqlCmd.Parameters.Add("@city", SqlDbType.NVarChar, 30).Value = txb_city.Text;
//SqlCmd.Parameters.Add("@street", SqlDbType.NVarChar, 40).Value = txb_street.Text;
SqlCmd.Parameters.Add("@Addres", SqlDbType.NVarChar, 150).Value = Ds.Tables[0].Rows[i][4].ToString();
SqlCmd.Parameters.Add("@telephon", SqlDbType.NChar, 15).Value = Ds.Tables[0].Rows[i][5].ToString();
SqlCmd.Parameters.Add("@mobile", SqlDbType.NChar, 15).Value = Ds.Tables[0].Rows[i][6].ToString();
SqlCmd.Parameters.Add("@rabet1", SqlDbType.NChar, 15).Value = Ds.Tables[0].Rows[i][7].ToString();
SqlCmd.Parameters.Add("@rabet2", SqlDbType.NChar, 15).Value = Ds.Tables[0].Rows[i][8].ToString();
SqlCmd.Parameters.Add("@SchoolName", SqlDbType.NVarChar, 50).Value = Ds.Tables[0].Rows[i][9].ToString();
SqlCmd.Parameters.Add("@avg", SqlDbType.Char, 6).Value = Ds.Tables[0].Rows[i][10].ToString();
SqlCmd.Parameters.Add("@returnValue", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
sqlcon.Open();
SqlCmd.ExecuteNonQuery();
if (SqlCmd.Parameters["@returnValue"].Value.ToString() == "1")
counter++;
sqlcon.Close();
}
что я должен делать? в конце я не могу говорить englishe очень хорошо, жаль ...
Это ** не ** проблема скорости. У вас больше параметров в коде C#, которые вы указали в своей хранимой процедуре. Попробуйте перевести сообщение об ошибке на ваш родной язык (слово в слово, а не с помощью google translate). –
- это требование для импорта данных из excel в базу данных с помощью C#? или любым другим способом? –
Наверное, вы слишком сложны здесь, есть более простые способы импорта Excel на SQL Server, см., Например, http://www.codeproject.com/Tips/636719/Import-MS-Excel-data-to-SQL-Server-table-using-Csh –