В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

Способы обновления базы данных из объекта DataSet с помощью Visual C# .NET или Visual C# 2005

ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.

Эта статья на английском языке: 307587
Для версии Microsoft Visual Basic .NET в данной статье см. 301248.
Версию данной статьи Microsoft Visual C++ .NET см. 815660.

В данной статье относится к следующие пространства имен библиотеки классов Microsoft платформа.NET Framework:
  • System.Data
  • System.Data.SqlClient
Аннотация
В данном пошаговом руководстве показано, как использовать набор данных , содержащий данные (в котором загружается из базы данных), изменение данных и отправка его в базу данных, чтобы обновить исходный источник.

Объекты DataSet , упростить доступ к данным в Microsoft платформа.NET Framework, являются объектами в памяти, может содержать таблицы, представления и отношения.

Требования

В следующем списке представлены рекомендуемое оборудование, программное обеспечение, сетевая инфраструктура и пакеты обновления, которые будут необходимы.
  • Microsoft Windows Server 2003, 2000Professional Microsoft Windows, Microsoft Windows 2000 Server, Microsoft Windows NT 4.0 Server или Microsoft Windows 2000 AdvancedServer
  • Microsoft SQL Server версии 7.0, Microsoft SQL Server2000 или Microsoft данных Engine (MSDE) с именем PUBS образец databaseinstalled
  • Microsoft Visual Studio 2005 или Microsoft Visual Studio.NET
Предполагается, что вы знакомы со следующими темами:
  • Терминология баз данных
  • Язык SQL (SQL)

Способы обновления базы данных из объекта DataSet

В этом разделе показано, как использовать объект DataSet для обновления данных в базе данных. Важно помнить, что также можно использовать объект SqlCommand для вставки, обновления и удаления данных в базе данных непосредственно.

Помогут вам разобраться в данной статье, щелкните следующий номер статьи базы знаний Майкрософт:
314145 Как заполнить объект DataSet из базы данных с помощью .NET C#
Некоторые разделы, которые рассматриваются в 314145 Включите демонстрируется извлечение данных из базы данных и в наборе данных, и как набор данных , отличный от базы данных.

После загрузки набора данных , можно изменить данные. Набор данных будет отслеживать эти изменения. Объект DataSet можно считать в памяти кэш данных, полученных из базы данных. Объект DataSet состоит из коллекции таблиц, связей и ограничений.

Чтобы обновить набор данных и отправлять обновления в базу данных, выполните следующие действия.
  1. Запустите Visual Studio 2005 или Visual Studio .NET.
  2. Создайте новое консольное приложение в Visual C#. VisualStudio создает статический класс по умолчанию и пустой процедуре Main() .
  3. Убедитесь в том, что проект содержит ссылку на пространства имен System.Data и системы . Использование инструкции using для пространства имен System.Dataи System.Data.SqlClientсистемытаким образом, не требуется определять эти пространства имен в коде declarationsfrom. Необходимо использовать эти операторы priorto всеми остальными объявлениями.
    using System;using System.Data;using System.Data.SqlClient;					
  4. Прежде чем изменять данные и отправить backto изменения базы данных, необходимо загрузить данные в набор данных. Подробные инструкции см.314145. Чтобы избежать дублирования кода в эту stepis, не представлены в данных.

    Строка подключения в пунктах followingcode для SQL Server, расположенный на локальном компьютере (или thecomputer, в котором выполняется код) для обобщения, создается подключение, andthen адаптер данных создается подключение, которое используется для заполнения набора данных данными.
    Примечание Перед выполнением этого кода необходимо изменить правильные значения <username>и<strongpassword> пароль. Убедитесь, что идентификатор thatUser, имеет соответствующие разрешения на выполнение этой операции, на что.</strongpassword> </username>
    string sConnectionString;// Modify the following string to correctly connect to your SQL Server.sConnectionString = "Password=<strong password>;User ID=<username>;"	+ "Initial Catalog=pubs;"	+ "Data Source=(local)";SqlConnection objConn	= new SqlConnection(sConnectionString);objConn.Open();// Create an instance of a DataAdapter.SqlDataAdapter daAuthors 	= new SqlDataAdapter("Select * From Authors", objConn);// Create an instance of a DataSet, and retrieve data from the Authors table.DataSet dsPubs = new DataSet("Pubs");daAuthors.FillSchema(dsPubs,SchemaType.Source, "Authors");daAuthors.Fill(dsPubs,"Authors");					
  5. Теперь, когда данные загружены, ее можно изменить. Там aremany способы добавления строки (или записи). В этом примере кода используются три stepprocedure:
    • Получите новый объект DataRow в DataTable.
    • Задайте необходимые значения полей DataRow .
    • Этот новый объект передается в метод Add коллекции DataTable.Rows .
    Вставьте следующий код после кода на шаге 4:
    //****************// BEGIN ADD CODE // Create a new instance of a DataTable.DataTable tblAuthors;tblAuthors = dsPubs.Tables["Authors"];DataRow drCurrent;// Obtain a new DataRow object from the DataTable.drCurrent = tblAuthors.NewRow();// Set the DataRow field values as necessary.drCurrent["au_id"] = "993-21-3427";drCurrent["au_fname"] = "George";drCurrent["au_lname"] = "Johnson";drCurrent["phone"] = "800 226-0752";drCurrent["address"] = "1956 Arlington Pl.";drCurrent["city"] = "Winnipeg";drCurrent["state"] = "MB";drCurrent["contract"] = 1;// Pass that new object into the Add method of the DataTable.tblAuthors.Rows.Add(drCurrent);Console.WriteLine("Add was successful, Click any key to continue!!");Console.ReadLine();// END ADD CODE  					
  6. Чтобы изменить существующие строки, получить соответствующий объект DataRow и введите новые значения для одного или нескольких столбцов. Youmust сначала найти правильные строки гораздо проще, поскольку загружается theschema таблицы, а также данные (вызов FillSchema на шаге 4). Таблицы со схемой, в месте, знает, whichcolumn является первичным ключом, и метод поиска коллекции строк доступна.

    Метод поиска возвращает объект DataRow с определенным значением в его первичного ключа (в данном случае au_id). После, DataRow, можно изменить столбцы. Themodifications в BeginEdit и EndEditпереносить не требуется, но это упрощает работу, что DataSet приходится делать и позволяет одновременно выполнять его проверку при вызове EndEditнабора данных . Вставьте следующий код после кода добавить:
    //*****************// BEGIN EDIT CODE drCurrent = tblAuthors.Rows.Find("213-46-8915");drCurrent.BeginEdit();drCurrent["phone"] = "342" + drCurrent["phone"].ToString().Substring(3);drCurrent.EndEdit();Console.WriteLine("Record edited successfully, Click any key to continue!!");Console.ReadLine();// END EDIT CODE  					
  7. Чтобы обновить исходную базу данных со всеми этими изменениями, передайте набор данных в метод Update объекта DataAdapter .

    Тем не менее перед вызовом Update, необходимо задать свойства InsertCommand, UpdateCommandи DeleteCommand объекта DataAdapter . Можно вручную написать SQL и заполнить эти threeproperties с соответствующие объекты SqlCommand , но также можно использовать Visual Studio .NET для трех команд generatethese автоматически.

    Чтобы создать необходимые commandswhen, когда они потребуются, необходимо создать экземпляр объекта SqlCommandBuilder и в конструкторе с помощью объекта DataAdapter . Если вы хотите использовать этот метод в примере кода, чтобы понять, какие isillustrated должен иметь informationavailable первичного ключа для таблицы. Чтобы открыть сведения о первичном ключе, вызова FillSchemaи установите свойство MissingSchemaAction вашей DataAdapterAddWithKeyили вручную задать первичный ключ в коде. Вставьте код экран после РЕДАКТИРОВАНИЯ кода.
    //*****************// BEGIN SEND CHANGES TO SQL SERVER SqlCommandBuilder objCommandBuilder = new SqlCommandBuilder(daAuthors);daAuthors.Update(dsPubs, "Authors");Console.WriteLine("SQL Server updated successfully, Check Server explorer to see changes");Console.ReadLine();// END SEND CHANGES TO SQL SERVER					
  8. Чтобы полностью удалить строку, используйте метод Delete объект DataRow . Обратите внимание, что набор строк содержит два метода, удаления и RemoveAt, которые кажутся удалить строку, но вместо удаления коллекции rowfrom. Только метод Delete отправляет удаления базы данных-источника. Вставьте код экран после отправки ИЗМЕНЕНИЙ на сервер SQL-кода.
    //*****************//BEGIN DELETE CODE drCurrent = tblAuthors.Rows.Find("993-21-3427");drCurrent.Delete();Console.WriteLine("Record deleted successfully, Click any key to continue!!"); Console.ReadLine();//END DELETE CODE 					
  9. Отправьте изменения в SQL Server для удаления thatyou запись, добавленную ранее. После удаления кода вставьте следующий код:
    //*****************// CLEAN UP SQL SERVERdaAuthors.Update(dsPubs, "Authors");Console.WriteLine("SQL Server updated successfully, Check Server explorer to see changes");Console.ReadLine();					
  10. Сохраните проект.
  11. В меню Отладка нажмите кнопку Пуск для запуска проекта. Обратите внимание, что отображается несколько окон сообщений, Показать ход выполнения кода и позволяют просматривать currentstate данных в ходе выполнения кода.

Полный пример кода

using System;using System.Data;using System.Data.SqlClient;namespace PopulateDataSet{    /// <summary>    /// Summary description for Class1.    /// </summary>    class Class1    {        static void Main(string[] args)        {            string sConnectionString;            // Modify the following string to correctly connect to your SQL Server.            sConnectionString = "Password=;User ID=sa;"                + "Initial Catalog=pubs;"                + "Data Source=(local)";            SqlConnection objConn                = new SqlConnection(sConnectionString);            objConn.Open();            // Create an instance of a DataAdapter.            SqlDataAdapter daAuthors                 = new SqlDataAdapter("Select * From Authors", objConn);            // Create an instance of a DataSet, and retrieve             // data from the Authors table.            DataSet dsPubs = new DataSet("Pubs");            daAuthors.FillSchema(dsPubs,SchemaType.Source, "Authors");            daAuthors.Fill(dsPubs,"Authors");             //****************            // BEGIN ADD CODE             // Create a new instance of a DataTable.            DataTable tblAuthors;            tblAuthors = dsPubs.Tables["Authors"];            DataRow drCurrent;            // Obtain a new DataRow object from the DataTable.            drCurrent = tblAuthors.NewRow();            // Set the DataRow field values as necessary.            drCurrent["au_id"] = "993-21-3427";            drCurrent["au_fname"] = "George";            drCurrent["au_lname"] = "Johnson";            drCurrent["phone"] = "800 226-0752";            drCurrent["address"] = "1956 Arlington Pl.";            drCurrent["city"] = "Winnipeg";            drCurrent["state"] = "MB";            drCurrent["contract"] = 1;            // Pass that new object into the Add method of the DataTable.            tblAuthors.Rows.Add(drCurrent);            Console.WriteLine("Add was successful, Click any key to continue!!");            Console.ReadLine();            // END ADD CODE               //*****************            // BEGIN EDIT CODE             drCurrent = tblAuthors.Rows.Find("213-46-8915");            drCurrent.BeginEdit();            drCurrent["phone"] = "342" + drCurrent["phone"].ToString().Substring(3);            drCurrent.EndEdit();            Console.WriteLine("Record edited successfully, Click any key to continue!!");            Console.ReadLine();			            // END EDIT CODE               //*****************            // BEGIN SEND CHANGES TO SQL SERVER             SqlCommandBuilder objCommandBuilder = new SqlCommandBuilder(daAuthors);            daAuthors.Update(dsPubs, "Authors");            Console.WriteLine("SQL Server updated successfully, Check Server explorer to see changes");            Console.ReadLine();			            // END SEND CHANGES TO SQL SERVER             //*****************            //BEGIN DELETE CODE             drCurrent = tblAuthors.Rows.Find("993-21-3427");            drCurrent.Delete();            Console.WriteLine("SRecord deleted successfully, Click any key to continue!!");             Console.ReadLine();                   //END DELETE CODE              //*****************            // CLEAN UP SQL SERVER            daAuthors.Update(dsPubs, "Authors");            Console.WriteLine("SQL Server updated successfully, Check Server explorer to see changes");            Console.ReadLine();         				        }    }}				
Ссылки
Дополнительные сведения об использовании ADO.NET DataSet объектов и SQL, посетите следующие веб-узлы корпорации Майкрософт:
Углубляться в доступ к данным (столбец Голоса MSDN )
http://msdn2.Microsoft.com/en-us/library/ms810288.aspx
ADO.NET для программиста ADO
http://MSDN.Microsoft.com/en-us/library/ms973217.aspx
Центр разработчиков MSDN Online .NET
http://msdn2.Microsoft.com/en-US/netframework/Default.aspx

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 307587 — последний просмотр: 10/29/2013 01:53:00 — редакция: 5.0

Microsoft Visual C# 2005, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition

  • kbhowtomaster kbsqlclient kbsystemdata kbmt KB307587 KbMtru
Отзывы и предложения