Tạo đối tượng DataSet

Một phần của tài liệu Phát triển ứng dụng cơ sở dữ liệu với c và net framework (Trang 99 - 101)

Chương 8 Ứng dụng Windows với WindowsForm

9.8.2. Tạo đối tượng DataSet

Trong ví dụ trước, tạo ra đối tượng SqlDataAdapter bằng cách gắn trực tiếp chuỗi kết nối và chuỗi truy vấn vào nó. Đối tượng Connection và Command sẽ được tạo và tích hợp vào trong đối tượng DataAdapter này. Với cách này, ta sẽ bị

hạn chế trong các thao tác liên quan đến cơ sở dữ liệu. SqlDataAdapter DataAdapter =

new SqlDataAdapter(commandString, connectionString);

Ví dụ sau đây sẽ minh họa việc lấy về đối tượng DataSet bằng cách tạo ra các

đối tượng Connection và Command một cách riêng biệt, khi ta cần dùng lại chúng hay muốn thực hiện hoàn chỉnh một thao tác thì sẽ thuận lợi hơn.

Đầu tiên ta sẽ khai báo bốn biến thành viên thuộc lớp, như sau : private System.Data.SqlClient.SqlConnection myConnection; private System.Data.DataSet myDataSet;

private System.Data.SqlClient.SqlCommand myCommand; private System.Data.SqlClient.SqlDataAdapter DataAdapter;

Đối tượng Connection sẽđược tạo riêng với chuỗn kết nối : string connectionString =

"server=localhost; uid=sa; pwd=; database=northwind";

myConnection = new System.Data.Sql.SqlConnection(connectionString); Sau đó ta sẽ mở kết nối :

myConnection.Open( );

Ta có thể thực hiện nhiều giao tác trên cơ sở dữ liệu khi kết nối được mở và sau khi dùng xong ta chỉđơn giản đóng kết nối lại. Tiếp theo ta sẽ tạo ra đối tượng DataSet:

myDataSet = new System.Data.DataSet( );

Và tiếp tục tạo đối tượng Command, gắn cho nó đối tượng Connection đã mở

và chuỗi truy vấn dữ liệu :

myCommand = new System.Data.SqlClient.SqlCommand( ) myCommand.Connection=myConnection;

Cuối cùng ta cần tạo ra đối tượng SqlDataAdapter, gắn đối tượng SqlCommand vừa tạo ở trên cho nó, đồng thời phải tiến hành ánh xạ bảng dữ liệu nó nhận được từ câu truy vấn của đối tượng Command để tạo sự đồng nhất về tên các cột khi đẩy bảng dữ liệu này vào DataSet.

DataAdapter = new System.Data.SqlClient.SqlDataAdapter( ); DataAdapter.SelectCommand= myCommand;

DataAdapter.TableMappings.Add("Table","Customers"); DataAdapter.Fill(myDataSet);

Bây giờ ta chỉ việc gắn DataSet vào thuộc tính DataSoucre của điều khiển lưới:

dataGrid1.DataSource=myDataSet.Tables["Customers"].DefaultView; Dưới đây là mã hoàn chỉnh của ứng dụng này :

using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Data.SqlClient; namespace ProgrammingCSharpWindows.Form {

public class ADOForm1: System.Windows.Forms.Form {

private System.ComponentModel.Container components; private System.Windows.Forms.DataGrid dataGrid1;

private System.Data.SqlClient.SqlConnection myConnection; private System.Data.DataSet myDataSet;

private System.Data.SqlClient.SqlCommand myCommand; private System.Data.SqlClient.SqlDataAdapter DataAdapter; public ADOForm1( )

{

InitializeComponent( );

// tạo đối tượng connection và mở nó

string connectionString = "server=Neptune; uid=sa; pwd=oWenmEany;" + "database=northwind";

myConnection = new SqlConnection(connectionString); myConnection.Open();

// tạo đối tượng DataSet mới myDataSet = new DataSet( );

// tạo đối tượng command mới và gắn cho đối tượng // connectio và chuỗi truy vấn cho nó

myCommand.Connection=myConnection;

myCommand.CommandText = "Select * from Customers"; // tạo đối tượng DataAdapter với đối tượng Command vừa // tạo ở trên, đồng thời thực hiện ánh xạ bảng dữ liệu

DataAdapter = new SqlDataAdapter( );

DataAdapter.SelectCommand= myCommand;

DataAdapter.TableMappings.Add("Table","Customers"); // đẩy dữ liệu vào DataSet

DataAdapter.Fill(myDataSet); // gắn dữ liệu vào lưới

dataGrid1.DataSource = myDataSet.Tables["Customers"].DefaultView; }

public override void Dispose() {

base.Dispose();

components.Dispose(); }

private void InitializeComponent( ) {

this.components = new System.ComponentModel.Container(); this.dataGrid1 = new System.Windows.Forms.DataGrid(); dataGrid1.BeginInit();

dataGrid1.Location = new System.Drawing.Point(24, 32); dataGrid1.Size = new System.Drawing.Size(480, 408); dataGrid1.DataMember = "";

dataGrid1.TabIndex = 0; this.Text = "ADOFrm1";

this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(536, 501); this.Controls.Add(this.dataGrid1);

dataGrid1.EndInit( ); }

public static void Main(string[] args) {

Application.Run(new ADOForm1()); }

} }

Giao diện của ví dụ này cũng tương tự như các ví dụ trên.

Một phần của tài liệu Phát triển ứng dụng cơ sở dữ liệu với c và net framework (Trang 99 - 101)

Tải bản đầy đủ (PDF)

(192 trang)