Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Làm thế nào để cập nhật bộ máy cơ sở dữ liệu từ một đối tượng bộ dữ liệu bằng cách sử dụng Visual C# 2005 hoặc Visual C# .NET

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 307587
Một phiên bản Microsoft Visual Basic.net của bài viết này, xin xem 301248.
Một phiên bản Microsoft Visual C++ .NET của bài viết này, xin xem 815660.

Bài viết này đề cập đến không gian tên Microsoft Khuôn khổ .NET lớp thư viện sau đây:
  • System.Data
  • System.Data.SqlClient
Tóm tắt
Bài viết từng bước này cho bạn thấy làm thế nào để có một bộ dữ liệu có chứa dữ liệu (mà được tải từ một cơ sở dữ liệu), làm thế nào để sửa đổi dữ liệu đó, và sau đó làm thế nào để gửi nó trở lại bộ máy cơ sở dữ liệu để cập nhật nguồn gốc.

Đối tượng bộ dữ liệu , một phần quan trọng của truy cập dữ liệu trong Microsoft Khuôn khổ .NET, là các đối tượng trong bộ nhớ có thể tổ chức bàn, xem, và mối quan hệ.

Yêu cầu

Danh sách sau phác thảo được đề nghị phần cứng, phần mềm, cơ sở hạ tầng mạng và gói bản ghi dịch vụ mà bạn cần:
  • Microsoft Windows Server 2003, Microsoft Windows 2000Professional, Microsoft Windows 2000 Server, Microsoft Windows 2000 AdvancedServer, hoặc Microsoft Windows NT 4.0 máy chủ
  • Microsoft SQL Server Phiên bản 7.0, Microsoft SQL Server2000, hoặc Microsoft dữ liệu động cơ (MSDE) với các quán rượu mẫu databaseinstalled
  • Microsoft Visual Studio 2005 hoặc Microsoft Visual Studio.NET
Bài viết này giả định rằng bạn đang quen thuộc với các chủ đề sau:
  • bộ máy cơ sở dữ liệu thuật ngữ
  • Ngôn ngữ truy vấn có cấu trúc (SQL)

Làm thế nào để cập nhật bộ máy cơ sở dữ liệu từ một đối tượng bộ dữ liệu

Phần này chứng tỏ làm thế nào để sử dụng đối tượng bộ dữ liệu để cập nhật dữ liệu trong bộ máy cơ sở dữ liệu. Nó là quan trọng cần nhớ rằng bạn cũng có thể sử dụng một đối tượng SqlCommand chèn, Cập Nhật và xóa dữ liệu trong bộ máy cơ sở dữ liệu trực tiếp.

Để giúp bạn hiểu bài viết này, bấm số bài viết dưới đây để xem bài viết trong cơ sở kiến thức Microsoft:
314145 Làm thế nào để cư một bộ dữ liệu đối tượng từ một bộ máy cơ sở dữ liệu bằng cách sử dụng Visual C# .NET
Một số trong những chủ đề được bảo hiểm trong 314145 bao gồm làm thế nào để lấy dữ liệu từ bộ máy cơ sở dữ liệu và vào một bộ dữ liệu, và làm thế nào bộ dữ liệu là riêng biệt và khác biệt với bộ máy cơ sở dữ liệu.

Sau khi số liệu được tải, bạn có thể sửa đổi các dữ liệu. Số liệu sẽ theo dõi những thay đổi này. Đối tượng bộ dữ liệu có thể được coi là một trong bộ nhớ cache của dữ liệu được lấy từ một bộ máy cơ sở dữ liệu. Đối tượng bộ dữ liệu bao gồm một tập hợp các bảng, mối quan hệ, và khó khăn.

Để cập nhật một tập dữ liệu và gửi những thông tin Cập Nhật về cho bộ máy cơ sở dữ liệu, hãy làm theo các bước sau:
  1. Bắt đầu Visual Studio 2005 hoặc Visual Studio net.
  2. Tạo ra một ứng dụng giao diện điều khiển mới trong Visual C#. VisualStudio tạo ra một lớp học tĩnh theo mặc định và một thủ tục Main() sản phẩm nào.
  3. Đảm bảo rằng các dự án có chứa một tham chiếu đến các không gian tên hệ thốngSystem.Data . Sử dụng các báo cáo bằng cách sử dụng trên không gian tên hệ thống, System.Data, và System.Data.SqlClient do đó bạn không cần phải vượt qua vòng loại declarationsfrom các không gian tên sau đó trong mã của bạn. Bạn phải sử dụng priorto báo cáo bất kỳ khai báo khác.
    using System;using System.Data;using System.Data.SqlClient;					
  4. Trước khi bạn có thể sửa đổi các dữ liệu và gửi backto thay đổi bộ máy cơ sở dữ liệu, bạn phải tải các thông tin vào bộ dữ liệu. Để trình chi tiết, hãy xem314145. Để tránh trùng lắp, mã trong này stepis không trình bày chi tiết.

    Chuỗi kết nối điểm followingcode để một máy chủ SQL được đặt trên máy tính địa phương (hoặc thecomputer vị trí mã đang chạy) để tóm tắt, một kết nối được tạo ra, andthen một bộ chuyển đổi dữ liệu được tạo ra, được sử dụng để điền vào bộ dữ liệu với dữ liệu.
    Lưu ý Bạn phải thay đổi ID người dùng <username>và mật khẩu<strongpassword> các giá trị chính xác trước khi bạn chạy mã này. Đảm bảo rằng thatUser ID có sự cho phép thích hợp để thực hiện thao tác này trên thedatabase.</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. Bây giờ mà các dữ liệu được tải, bạn có thể sửa đổi nó. Có aremany cách để thêm một hàng (hoặc hồ sơ). Mẫu mã này sử dụng một stepprocedure ba:
    • Có được một đối tượng mới của DataRow từ DataTable.
    • Thiết lập giá trị trường DataRow khi cần thiết.
    • Vượt qua rằng đối tượng mới vào phương pháp Thêm bộ sưu tập DataTable.Rows .
    Dán đoạn mã sau sau khi mã trong bước 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. Để chỉnh sửa hàng hiện có, có được các đối tượng DataRow thích hợp, và sau đó cung cấp giá trị mới cho một hoặc nhiều cột. Youmust đầu tiên tìm thấy dòng đúng, đó là dễ dàng hơn nhiều bởi vì bạn tải theschema của bảng dữ liệu (cuộc gọi đến FillSchema trong bước 4). Với lược đồ tại chỗ, bảng biết whichcolumn là khoá chính của nó, và phương pháp tìm thấy bộ sưu tập hàng có sẵn.

    Phương pháp Tìm trả về các đối tượng DataRow với một giá trị cụ thể trong khoá chính của nó (trong trường hợp này, au_id). Sau khi bạn có mà DataRow, bạn có thể sửa đổi các cột. Bạn không cần phải bọc themodifications trong BeginEditEndEdit, nhưng điều này đơn giản hoá việc bộ dữ liệu đã làm và cho phép bộ dữ liệu để thực hiện kiểm tra xác nhận của nó cùng một lúc khi EndEdit được gọi là. Dán đoạn mã sau sau khi mã ADD:
    //*****************// 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. Để cập nhật bộ máy cơ sở dữ liệu ban đầu với tất cả những thay đổi này, vượt qua bộ dữ liệu vào Cập Nhật phương pháp đối tượng DataAdapter .

    Tuy nhiên, trước khi bạn có thể gọi Cập Nhật, bạn phải thiết lập các thuộc tính InsertCommand, UpdateCommand, và DeleteCommand của đối tượng DataAdapter . Bạn có thể tự viết SQL và cư trú trong các threeproperties với tương ứng SqlCommand các đối tượng, nhưng bạn cũng có thể sử dụng Visual Studio .NET generatethese ba lệnh tự động.

    Để tạo ra commandswhen cần thiết cần thiết, bạn phải tạo một thể hiện của đối tượng SqlCommandBuilder và sử dụng DataAdapter trong các nhà xây dựng. Nếu bạn muốn sử dụng phương pháp này, mà isillustrated trong mẫu mã để làm theo, bạn phải có chính chính informationavailable cho bảng của bạn. Để truy cập thông tin quan trọng chính, gọi FillSchema, và sau đó thiết lập tài sản MissingSchemaAction của bạn DataAdapter để AddWithKey, hoặc đặt thủ công các khoá chính trong mã của bạn. Dán thefollowing mã sau khi chỉnh sửa mã:
    //*****************// 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. Để xóa một hàng hoàn toàn, sử dụng phương pháp xóa đối tượng DataRow . Lưu ý rằng bộ sưu tập hàng có hai phương pháp, loại bỏRemoveAt, mà dường như để xóa dòng nhưng thay vào đó chỉ cần loại bỏ rowfrom bộ sưu tập. Phương chỉ xóa Pháp gửi xóa của bạn quay lại bộ máy cơ sở dữ liệu nguồn. Dán thefollowing mã sau khi mã gửi thay đổi để SQL SERVER:
    //*****************//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. Gửi các thay đổi cho SQL Server để loại bỏ anh ghi được gửi trước đó. Dán đoạn mã sau sau khi xóa mã:
    //*****************// CLEAN UP SQL SERVERdaAuthors.Update(dsPubs, "Authors");Console.WriteLine("SQL Server updated successfully, Check Server explorer to see changes");Console.ReadLine();					
  10. Lưu dự án của bạn.
  11. Trên các gỡ lỗi trình đơn, nhấp vào Bắt đầu để chạy các dự án. Thông báo một số tin thư thoại hộp xuất hiện, mà cho thấy sự tiến bộ của mã và cho phép bạn xem lại currentstate dữ liệu tiến của mã.

Danh sách mã hoàn chỉnh

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();         				        }    }}				
Tham khảo
Để biết thêm chi tiết về việc sử dụng ADO.NET, số liệu đối tượng, và SQL, ghé thăm Web site sau của Microsoft:
Lặn vào truy cập dữ liệu (một cột MSDN tiếng nói )
http://msdn2.Microsoft.com/en-US/Library/ms810288.aspx
ADO.NET cho các lập trình viên ADO
http://MSDN.Microsoft.com/en-US/Library/ms973217.aspx
MSDN trực tuyến Trung tâm nhà phát triển .NET
http://msdn2.Microsoft.com/en-US/netframework/default.aspx

Cảnh báo: Bài viết này đã được dịch tự động

Thuộc tính

ID Bài viết: 307587 - Xem lại Lần cuối: 10/29/2013 02:29:00 - Bản sửa đổi: 3.0

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

  • kbhowtomaster kbsqlclient kbsystemdata kbmt KB307587 KbMtvi
Phản hồi