1. Trang chủ >
  2. Công Nghệ Thông Tin >
  3. Kỹ thuật lập trình >

Cập nhật một dòng đã có

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.59 MB, 226 trang )


Xóa một dòng là kết quả của việc gọi phương thức Delete():



r.Delete();

Một dòng được xóa có trạng thái là Deleted, nhưng bạn không thể đọc các cột từ một dòng đã xoá, nó không còn giá trị nữa. Khi

gọi phương thức Update(), tất cả các dòng bị xoá sẽ sử dụng DeleteCommand, trong trường hợp này sẽ chạy stored procedure

RegionDelete.



Viết XML xuất

Như bạn đã thấy, DataSet hỗ trợ mạnh việc định nghĩa sơ đồ của nó trong một XML, và bạn có thể đọc dữ liệu từ một tài liệu

XML, bạn cũng có thể viết một tài liệu XML.

Phương thức DataSet.WriteXml() cho phép bạn xuất các thành phần khác nhau của dữ liệu được lưu trong DataSet. Bạn có thể

chọn chỉ xuất dữ liệu, hoặc dữ liệu và sơ đồ. Mã sau đây đưa ra một ví dụ của cho cả hai loại trên:



ds.WriteXml(".\\WithoutSchema.xml");

ds.WriteXml(".\\WithSchema.xml" , XmlWriteMode.WriteSchema);

File đầu tiên, WithoutSchema.xml được đưa ra dưới đây:









1

Eastern





2

Western





3

Northern





4

Southern























File WithSchema.xml bao gồm cả sơ đồ và dữ liệu của DataSet:








xmlns:xs="http://www.w3.org/2001/XMLSchema"

xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">














msdata:AutoIncrement="true"

msdata:AutoIncrementSeed="1"

type="xs:int" />


type="xs:string" />



















1

Eastern





2

Western





3

Northern





4

Southern























Chú ý rằng, các thuộc tính mở rộng cho các cột trong một DataSet, như AutoIncrement và AutoIncrementSeed - những thuộc tính

này tương ứgn với các thuộc tính có thể định nghĩa trong một DataColumn.



Tóm tắt

Chủ đề về truy cập cơ sở dữ liệu là một lĩnh vực rất lớn, đặc biệt là .NET với nhiều lớp bao bọc. Chương này cung cấp một phác

thảo về các lớp chính trong không gian ADO.NET, và chỉ ra cách dùng các lớp này trong lúc thao tác dữ liệu từ dữ liệu nguồn.

Trước tiên, chúng tôi chỉ ra cách dùng đối tượng Connection, thông qua việc dùng cả hai cách SqlConnection (cụ thể SQL

Server) và OleDbConnection (cho các nguồn dữ liệu OLE DB). Mô hình lập trình cho hai lớp này trương đối giống nhau và có

thể thay thế cho nhau.

Sau khi minh họa cách kết nối và không kết nối với dữ liệu nguồn, chúng tôi trình bày cách hoạt động của nó, vì vậy các tài

nguyên khan hiếm, như các kết nối cơ sở dữ liệu, cần phải được đóng càng sớm càng tốt. Cả hai lớp kết nối đều thực thi giao diện

IDisposable, được gọi khi một đối tượng dùng trong khối lệnh using. Tôi muốn nhấn mạnh với bạn rằng nêu đóng kết nối càng

sớm càng tốt.

Sau đó chúng tôi trình bày về các database command, thông qua các ví dụ không trả về giá trị gì cả, gọi các stored procedure

trong các tham số xuất và nhập. Các phương thức khác cũng đã được mô tả, trong đó phương thức ExecuteXmlReader chỉ có sẵn

trong SQL Server provider. Đây là cách đơn giản để chọn và thao tác trên dữ liệu của XML.

Các lớp chung trong không gian tên System.Data được mô tả chi tiết, từ lớp DataSet đến DataTable, DataColumn, DataRow và

tất nhiên cả các quan hệ, và các ràng buộc. Lớp DataSet là một kho chứa dữ liệu tuyệt vời, và các phương thức khác đã làm nên ít

tưởng truyền thông qua các tầng dữ liệu. Dữ liệu trong một DataSet có thể được mô tả trong XML để truyền liệu, thêm vào đó,

các phương thức có sẵn sẽ truyền dữ liệu nhỏ nhất giữa các lớp. Nhiều bảng trong một DataSet đơn sẽ làm tăng khả năng của nó;

có thể tồn tại các quan hệ tự động giữa các dòng chủ tớ chúng sẽ được khai thác trong chương kế tiếp.

Trong DataSet có lưu trữ sơ đồ cấu tạo, nhưng .NET cũng bao gồm trình cung cấp dữ liệu có sẵn đối tượng Command có thể

dùng để chọn dữ liệu vào một DataSet sau đó cập nhật đữ liệu trong bộ lưu trữ dữ liệu. Một lợi ích khác của các data adapte là

nhóm các lệnh thành bốn hoạt động - SELECT, INSERT, UPDATE và DELETE. Hệ thống có thể tạo một bộ các lệnh dự trên

thông tin về sơ đồ cơ sở dữ liệu và một lệnh SELECT, nhưng tốt nhất là chạy các stored procedure, các lệnh trong DataAdapter

được định nghĩa thích hợp để truyền những thông tin cần thiết cho những stored procedure này.

Một sơ đồ XML và XSD trở nên phổ biến trong một vài năm trở đây, chúng tôi đã trình bày các chuyền từ một sơ đồ XSD thành

một bộ các lớp dữ liệu bằng cách sử dụng công cụ XSD.EXE có trong .NET. Các lớp được tạo ra sẵn sàng dùng trong một ứng

dụng, nó tự động sinh ra vì vậy có thể tiếc kiệm được nhiều thời gian đánh máy.

Trong một vài trang cuối của chương chúng tôi đã giới thiệu một số cách tốt nhất trong thực hành và qui tắc đặt tên cho các nhà

phát triển ứng dụng cơ sở dữ liệu. Dù rằng nó không liên quan gì đến .NET, nhưng chúng cũng có những giá trị đáng kể. Cần

phải dựa vào tập các qui tắc này này khi lập trình trong cả C# với SQL Server database hay Perl scripts trên Linux.

Những kiến thức này sẽ rất tốt khi chuyển qua chương sau, chương sau chúng ta sẽ khám phá cách sử dụng Visual Studio và các

công cụ dữ liệu Windows Forms của .NET.



Chương 10: Viewing .NET data

Tổng quan

Chương cuối cùng sẽ chỉ các cách khác nhau để chọn và thay đổi dữ liệu. Chương này, chúng tôi sẽ minh hoạ cách bạn thể hiện

dữ liệu cho người sử dụng thấy bằng cách gắn kết các control Windows.



Khả năng gắn kết dữ liệu của .NET giống với ADO và các control của VB. Tất cả ngôn ngữ .NET đều có khả năng sử dụng cùng

những Control và phương thức. Khía cạnh mà chúng ta xem xét đó là control DataGrid.

Một trong những đặc tính hay nhất của Datagrid là tính uyển chuyển- nguồn dữ liệu có thể là mảng, DataTable, DataView,

DataSet hay là một thành phần thực thi các giao diện IListSource hay IList. Với một số lượng lớn các tuỳ chọn sẽ chỉ cách mà

mọi nguồn dữ liệu này được sử dụng và được xem trong DataGrid.

Gắn kết dữ liệu là một yêu cầu thông thường, và mặc dù VB 6 có khả năng này nhưng không bằng .NET, tất cả ngôn ngữ quản lý

đều hoàn thiện khả năng gắn kết dữ liệu. Có những gì hơn khi giới hạn các cột dữ liệu, một control sẽ cập nhật tự động khi hàng

dữ liệu hiện tại thay đổi. Chương này chúng ta tìm hiểu một vài khả năng gắn kết dữ liệu và chỉ cách để kết nối dữ liệu với

control Windows Forms. Chúng ta sẽ xem vài công việc bên trong quá trình gắn kết dữ liệu để hiểu rõ hơn cách chúng hoạt động.



Nguồn dữ liệu sẽ trở nên hợp lý hơn trong Visual studio.NET, và chương này sẽ chỉ cách sử

dụng server Explorer để tạo một sự kết nối và phát sinh Dataset. Chúng ta sẽ tìm hiểu cách dùng

của lược đồ XSD trong visual studio.NET.

Gắn kết dữ liệu

Ở ví dụ trứơc đã xem xét tất cả control DataGrid, đó chỉ là một phần trong thời gian chạy.NET có thể dùng để hiển thị dữ liệu.

Một tiến trình gắn kết một control và một nguồn dữ liệu được gọi là data binding.

Nếu bạn có những kinh nghiệm với các ứngdụng lập trình Windows trong MFC. Có lúc nào đó bạn đã sử dụng chức năng Dialog

Data Exchange (DDX)để móc các biến thành viên của một lớp với bộ điều khiển Win32. Bạn sẽ vui sướng khi biết rằng bạn có

thể giấu cửa trên DDX, như nó dễ dàng hơn để móc dữ liệu vào bộ điều khiển trong .NET. Bạn có thể gắn kết dữ liệu không chỉ

đến các bộ điều khiển Window mà còn với các trang Web ASP.NET.



Gắn kết đơn giản

Một control hỗ trợ việc gắn kết đơn hiển thị chỉ những giá trị đơn tại một lúc, như là một hộp văn bản hay một nút chọn. Ví dụ

sau chỉ cách gắn kết một cột từ một DataTable đến một hộp văn bản.



DataSet ds = CreateDataSet();

textBox1.DataBindings.Add("Text", ds , "Products.ProductName");

Sau khi lấy lại vài dữ liệu từ bảng Products và lưu trữ trong một DataSet được trả về từ phương thức CreateDataSet() như trên,

dòng thứ hai gắn kết thuộc tính Text của control đến cột Products.ProductName. Nếu bạn viết đoạn mã này từ cơ sở dữ liệu

Northwind, bạn sẽ thấy màn hình như bên dưới đây:



Hộp văn bản hiển thị vài thứ trong cơ sở dữ liệu. Để kiểm tra rằng nó là cột hay giá trị, bạn sẽ sử dụng công cụ SQL Server

Query Analyzer để kiểm tra nội dung của bảng Procucttool.



Đối tượng gắn kết dữ liệu

Sơ đồ sau chỉ một thừa kế lớp cho các đối tượng được sử dụng trong gắn kết dữ liệu. Trong phần này ta bàn luận về

BindingContext, CurrencyManager, và PropertyManager các lớp của System.Windows.Forms, và trình cách chúng tương tác khi

dữ liệu giới hạn trong một hay nhiều control trên một form. Các đối tượng chuyển màu được dùng trong gắn kết.



Trong ví dụ trước, chúng ta sử dụng thuộc tính DataBinding của control TextBox để gắn kết một cột từ một DataSet đến thuộc

tính Text của bộ điều khiển. Thuộc tính DataBindings là một thể hiện của ControlBindingsCollection :



textBox1.DataBindings.Add("Text", ds, "Products.ProductName");

Dòng này thêm một đối tượng gắn kết từ một đối tượng Binding đến ControlBindingsCollection



Binding Context

Mọi Windows form có một thuộc tính BindingContext. Form được thừa hưởng từ Control . Một đối tượng BindingContext có

một tập thể hiện BindingManagerBase. Những thể hiện này được tạo và thêm vào đối tượng quản lý gắn kết khi một control bị

giới hạn:



BindingContext sẽ chứa vài nguồn dữ liệu, được gói trong một CurrencyManager hay một PropertyManager. Sự quyết định lớp

nào được dùng dựa vào chính nguồn dữ liệu.

Nếu nguồn dữ liệu chứa một dãy item như là DataTable, DataView, hay bất kỳ đối tượng khác thực thi giao diện IList thì một

CurrencyManager sẽ được dùng, như nó có thể duy trì vị trí hiện tại bên trong nguồn dữ liệu. Nếu nguồn dữ liệu chỉ trả về một

giá trị đơn thì một PropertyManager sẽ được lưu trữ trong BindingContext.

Một CurrencyManager hay PropertyManager chỉ được tạo một lần cho một nguồn dữ liệu. Nếu bạn gắn kết hai hộp văn bản với

một hàng từ một DataTable thì chỉ một currencyManager sẽ được tạo bên trong binding context.

Mọi control thêm vào một form được gắn kết với bộ quản lý gắn kết của form, vì thế tất cả control chia sẽ cùng một thể hiện. Khi

một control được tạo thuộc tính BindingContext của nó là null. Khi control được thêm bộ Control của form thì nó sẽ cài

BindingContext đến bộ đó của form.

Để gắn kết một control với một form, bạn cần thêm một thực thể vào thuộc tính DataBinding của nó. Đoạn mã bên dưới tạo một

sự gắn kết mới:



textBox1.DataBindings.Add("Text", ds, "Products.ProductName");

Phương thức Add() của ControlBindingsCollection tạo một thể hiện mới của đối tượng Binding từ những thông số của phương

thưc này và thêm chúng vào bộ những việc gắn kết



Xem Thêm
Tải bản đầy đủ (.doc) (226 trang)

×