Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как записать DataTable в SQLServer 2005 / 9 сообщений из 9, страница 1 из 1
20.12.2013, 10:14
    #38507504
Snak2013
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать DataTable в SQLServer 2005
Доброго времени суток стал вопрос о необходимости записать данные из DataTable в SQLServer 2005. Я вышел из положения следующим образом:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
private void SaveToSQL()
        {
            Servers value = null;
            if (elements.TryGetValue("SRV_16", out value)) 
            {

                string dbConnectionString = "Data Source=" + value.NameServer + ";Initial Catalog="+value.BdName+";Persist Security Info=True;User ID="+value.Login+";Password="+value.Password+";";
                SqlConnection con = new SqlConnection(dbConnectionString);
                try
                {
                    con.Open();
                    for (int i = 0; i < _dt.Rows.Count; i++)
                    {
                        string Query = "insert into data_0001 (id,okud,year,period,version,okpo,okato,name,leader_fio,responsible_post,responsible_fio,phone) values('" + this._dt.Rows[i][0] + "','" + this._dt.Rows[i][1] + "','" + this._dt.Rows[i][2] + "','" + this._dt.Rows[i][3] + "','" + this._dt.Rows[i][4] + "','" + this._dt.Rows[i][5] + "','" + this._dt.Rows[i][6] + "','" + this._dt.Rows[i][7] + "','" + this._dt.Rows[i][8] + "','" + this._dt.Rows[i][9] + "','" + this._dt.Rows[i][10] + "','" + this._dt.Rows[i][11] + "')";
                        SqlCommand cmd = new SqlCommand(Query, con);
                        cmd.ExecuteNonQuery();
                    }
                    System.Windows.MessageBox.Show("Сохранено!");
                    con.Close();
                }
                catch (Exception ex)
                {
                    System.Windows.MessageBox.Show(ex.Message);
                }
            }
        }

Это работает но записывать приходится свыше 100 тысяч строк и этот способ занимает очень большой промежуток времени есть ли какой нибудь другой более быстрый способ выполнить задачу? Заранее спасибо.
...
Рейтинг: 0 / 0
20.12.2013, 10:45
    #38507541
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать DataTable в SQLServer 2005
SqlBulkCopy.
А за передачу параметров конкатенацией - бить нещадно.
...
Рейтинг: 0 / 0
20.12.2013, 11:02
    #38507561
Snak2013
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать DataTable в SQLServer 2005
Спасибо за ответ щас буду пробовать.
...
Рейтинг: 0 / 0
20.12.2013, 12:32
    #38507701
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать DataTable в SQLServer 2005
...
Рейтинг: 0 / 0
20.12.2013, 12:33
    #38507705
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать DataTable в SQLServer 2005
... туплю с утра, прошу прощения .. :)
...
Рейтинг: 0 / 0
20.12.2013, 16:22
    #38508135
Snak2013
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать DataTable в SQLServer 2005
Сон Веры ПавловныSqlBulkCopy.
А за передачу параметров конкатенацией - бить нещадно.

Да я бы и сам хотел избавиться от конкатенации, но как по другому передать динамические параметры я просто не знаю.
...
Рейтинг: 0 / 0
20.12.2013, 16:53
    #38508192
Syrex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать DataTable в SQLServer 2005
Код: c#
1.
comm.Parameters.Add()

- например
...
Рейтинг: 0 / 0
21.12.2013, 03:20
    #38508629
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать DataTable в SQLServer 2005
carrotik... туплю с утра, прошу прощения .. :)Вообще-то, если Вы про это 15322454 , то Вы "не тупите": SqlBulkCopy для быстрой массовой вставки данных - это то, что доктор прописал...

Syrex
Код: c#
1.
comm.Parameters.Add()

- напримерЕсли при этом не забыть вынести определение SqlCommand со всеми параметрами за пределы цикла...
А потом не забыть каждому параметру в цикле присвоить "правильное" значение перед выполнением команды...
Наверное, все же SqlDataAdapter будет лучше взять - там лишней "писанины" по-меньше будет...
...
Рейтинг: 0 / 0
21.12.2013, 06:32
    #38508656
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать DataTable в SQLServer 2005
sphinx_mvВообще-то, если Вы про это 15322454
Он про то, что SqlBulkCopy уже предложиле выше процитированного постинга.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как записать DataTable в SQLServer 2005 / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]