2015-04-01 3 views
0

У меня есть Excel листа (названный в $ Лист1) и таблицы SQL (названный как пользователей) с таким же Формиатом, который представлен нижеКак вставить весь DataTable в Sql таблицу сразу в C#

ID | UserName | FirstName | LastName | DateOfBirth | 
    1 | robert | robert | poinan | 1984  | 
    2 | joy  | joy  | rob  | 1990  | 

I Прочитали целые данные листа первенствовать в DataSet (Названный как «йз„) теперь я хочу, чтобы вставить весь набор данных (который является“DS„) в SQL таблицу (которая“Пользователи»)

Я использую для цикла (можно также использовать цикл Еогеаспа) вставить «ца» (DataSet) строки по одному в пользователь (Sql таблицы) таблицы

sqlConn.Open(); 
for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 
       { 
SqlCommand cmd = new SqlCommand("INSERT INTO [Users] ([ID],[UserName],[FirstName],[LastName],[DateOfBirth]) VALUES(@ID,@UserName,@FirstName,@LastName,@DateOfBirth))", sqlConn); 

cmd.Parameters.AddWithValue("@ID", ds.Tables[0].Rows[i][0].ToString()); 
cmd.Parameters.AddWithValue("@UserName", ds.Tables[0].Rows[i][1].ToString()); 
cmd.Parameters.AddWithValue("@FirstName", ds.Tables[0].Rows[i][2].ToString()); 
cmd.Parameters.AddWithValue("@LastName", ds.Tables[0].Rows[i][3].ToString()); 
cmd.Parameters.AddWithValue("@DateOfBirth", ds.Tables[0].Rows[i][4].ToString()); 
cmd.ExecuteNonQuery(); 
        } 
       } 
       sqlConn.Close(); 

в этом коде я столкнулся много проблем один из них, если есть какая-либо ошибка при вставке строки, остановка программы, но строки, которые были вставлены раньше, существуют в базе данных sql в следующий раз, когда я пытаюсь запустить эту программу, строки данных дублируются. У меня есть миллионы записей. если я хочу проверить строку данных в таблице sql, для выполнения всего процесса требуется много времени.

My quetion есть. Есть ли способ, чтобы вставить весь 'DataTable (который находится в DataSet)' в пользователей таблицу сразу

Нечто подобное

INSERT INTO [Users](ID, FirstName,LastName,DateOfBirth) 
SELECT ID, FirstName,LastName,DateOfBirth FROM ds.Tables[0] 

;

+1

Почему вы не можете использовать SqlBulkCopy .PLS обратитесь к этому документу http://www.codeproject.com/Tips/636719/Import-MS-Excel-data-to-SQL-Server-table-using -Csh – user2526236

+0

, но что, если существуют разные типы данных? –

+0

Спасибо @ user2526236 :-) –

ответ

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