Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как верно внести в базу данные из DataSet 
V
    Опции темы
Иван Человеков
  Дата 5.3.2010, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 11.3.2006
Где: Минск

Репутация: нет
Всего: 1



Добрый день.

Хочу получить вот в каком вопросе:
Есть у меня локальная база, в которой я собираю данные(их не много 100 200 строк), затем мне надо отослать их на SQLserver 2005.
Как мне это верно сделать?
Я создал подключение к SQL2005, получил с него пару записей в  dt, затем добавил в этот DataSet(SQL2005) dt данные из локального DataSet dtInvent и хочу сделать обновление в SQL2005 DataAdapter.

В данный момент я затрудняюсь в составлении InsertCommand

Код

                string connStr = "Server=192.168.1.3;Database=IRBISDB;Uid=Egor;Pwd=sdfgh";
                using (SqlConnection connection = new SqlConnection(connStr))
                {
                    connection.Open();

                    using (SqlCommand command = connection.CreateCommand())
                    {
                        string queryString = "SELECT * FROM InventoryBooks WHERE NumberDoc = 1;";
                        
                        SqlDataAdapter lDataAdapter = new SqlDataAdapter(queryString, connection);
                        string sqlInsert = "INSERT INTO InventoryBooks"
                            + "(DataDoc, NumberDoc, InventoryCode)VALUES "
                            + " ('{1}','{2}','{3}')", 
                            //Тут не знаю что добавлять, данных-то много

                        DataSet lDS = new DataSet();
                        lDataAdapter.Fill(lDS, "#InventoryBooks");

                        DataTable dt = lDS.Tables[0].Copy();
                        DataTable dtInvent = dbComponent.DBQuery("SELECT DataSent,DataRcvd FROM DataQueue").Tables[0];

                        foreach (DataRow dr in dtInvent.Rows)
                        {
                            DataRow newRow = dt.NewRow();
                            newRow[0] = dateTimePicker1.Value;
                            newRow[1] = "1";
                            newRow[2] = dr[0].ToString();
                            dt.Rows.Add(newRow);
                        }

                        //dt.AcceptChanges();
                        lDataAdapter.Update(lDS.Tables["#InventoryBooks"]);
                        //lDS.AcceptChanges();
                    }
                    connection.Close();
                }


Может это можно сделать проще? В цикле отправлять insert команды? Благодарю.
PM ICQ   Вверх
jorikdima
Дата 5.3.2010, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 18.1.2008
Где: Там, где Зенит

Репутация: нет
Всего: нет



В студии есть возможность автогенерации команд обновления, вставки, удаления... Она создаст адаптеры, которыми можно пользоваться и не писать во многих случаях ни одного SQL запроса.
PM MAIL   Вверх
Иван Человеков
  Дата 5.3.2010, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 11.3.2006
Где: Минск

Репутация: нет
Всего: 1



Ребята, почему код:

Код

                using (SqlConnection cn = new SqlConnection(connStr))
                {
                    cn.Open();

                    using (SqlCommand command = cn.CreateCommand())
                    {
                        string queryString = "SELECT * FROM BookInventory;"; // WHERE NumberDoc = 1;";
                        
                        SqlDataAdapter da = new SqlDataAdapter(queryString, cn);

                        string sqlInsert = "INSERT INTO BooksInventory"
                            + "(DataDoc, NumberDoc, CodeInventory)VALUES "
                            + " (@DataDoc,@NumberDoc,@CodeInventory)"; 
                        da.InsertCommand = new SqlCommand(sqlInsert, cn);
                        
                        SqlParameterCollection pc = da.InsertCommand.Parameters;
                        pc.Add("@DataDoc", SqlDbType.DateTime, 0, "DataDoc");
                        pc.Add("@NumberDoc", SqlDbType.VarChar, 0, "NumberDoc");
                        pc.Add("@CodeInventory", SqlDbType.VarChar, 0, "CodeInventory");

                        DataSet lDS = new DataSet();
                        da.Fill(lDS, "#BookInventory");

                        DataTable dt = lDS.Tables[0].Copy();
                        DataTable dtInvent = dbComponent.DBQuery("SELECT CodeInventory FROM BookInventory").Tables[0];

                        foreach (DataRow dr in dtInvent.Rows)
                        {
                            DataRow newRow = dt.NewRow();
                            newRow[0] = dateTimePicker1.Value;
                            newRow[1] = ReportNumericUpDown.Value.ToString();
                            newRow[2] = dr[0].ToString();
                            dt.Rows.Add(newRow);
                        }

                        da.Update(lDS.Tables["#BookInventory"]);
                    }
                    cn.Close();
                }



 не вносит изменений?
Благодарю.
PM ICQ   Вверх
Иван Человеков
  Дата 5.3.2010, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 11.3.2006
Где: Минск

Репутация: нет
Всего: 1



Заменил:

Код

DataTable dt = ds.Tables[0].Copy();


на 
Код

DataTable dt = ds.Tables["#BookInventory"];


Заработало.

Это сообщение отредактировал(а) Иван Человеков - 5.3.2010, 14:36
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.1211 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.