Các thành phần của ADO.NET

05/07/2016 Nguyễn Hồng Vân

ADO.NET là gì trong C#, các thành phần của ADO.NET gồm những gì, chúng ta hãy cùng nhau tìm hiểu bài viết sau đây.

Các thành phần của ADO.net được mô tả như hình sau:

Các thành phần trong Ado.net

1. Trình cung cấp dữ liệu .NET (.NET Data Provider)

  • Các lớp thư viện trong ADO.NET

ADO.net chứa các không gian tên cho phép người dùng truy cập, thao tác với cơ sở dữ liệu. Với mỗi  hệ quản trị cơ sở dữ liệu tương ứng có các lớp khác nhau.

  • Data.OleDb: Access, SQL Server, Oracle
  • Data.SqlClient: SQL Server
  • Data.OracleClient: Oracle
  • Đặc điểm:
  • Cả ba thư viện trên về giao tiếp lập trình là giống nhau
  • Dùng thư viện SqlClient truy xuất SQL Server nhanh hơn OleDb
  • Mô hình .NET Data Provider

 Mô hình .NET provider

2. Đối tượng Connection, Command, DataReader, DataSet, DataAdapter , DataTable.

2.1. Connection

  • Kết nối cơ sở dữ liệu bằng giao diện

Bước 1. Chọn Tools>Connect to Database chuyển đến cửa sổ kết nối cơ sở dữ liệu

 

Cửa sổ kết nối cơ sở dữ liệu

 Bước 2. Trong mục DataSource chọn kiểu ứng dụng cơ sở dữ liệu cần kết nối

 Bước 3. Trong mục Browse chọn cơ sở dữ liệu cần kết nối.

 Bước 4. Chọn Test Connection để kiểm tra xem kết nối thành công hay chưa

 Bước 5. Chọn nút ok để hoàn tất việc kết nối

  • Kết nối cơ sở dữ liệu SQLServer

// Khai báo lớp SqlClient

using System.Data.SqlClient;

           // Khai báo và khởi tạo:

SqlConnection sqlcon;

string driver="server=localhost; UID=sa; PWD=; database=name_database";

      sqlcon=new Sqlconnection();

sqlcon.ConnectionString=driver;

Driver là chuỗi kết nối đến cơ sở dữ liệu trong trường hợp này mình kết nối với sqlserver 2000/2005

  • Kết nối với cơ sở dữ liệu Access

Ta cần khai báo lớp OleDb

using System.Data.OleDb;

OleDbConnection oleconn;

driver = "Provider=Microsoft.jet.OLEDB.4.0; Data Source=duongdan_tendata";

oleconn = new OleDbConnection();

oleconn.ConnectionString = driver;

  • Thuộc tính:
  • ConnectString: chứa đựng chuỗi kết nối tới cơ sở dữ liệu
  • Database: Chứa đựng tên cơ sở dữ liệu trong chuỗi kết nối ConnectString ở trên và bạn có thể thay đổi cơ sở dữ liệu trong lúc thực thi bằng phương thức ChangeDataBase:

            Sqlconn.ChangeDatabase(“name_database_thaydoi”);

  • Server: tên máy chủ bạn trỏ tới
  • Connect Timeout: số thời gian(tính bằng giây) chờ kết nối dữ liệu mặc đình là 15 giây, nếu trong khoảng thời gian này mà vẫn chưa kết nối xong một lỗi Connect Timeout được đưa ra.
  • State: trả về trạng thái của đối tượng SqlConnection: bạn có thể kiểm tra trạng thái của state như sau
  • Phương thức:
  • Open: cho phép mở dữ liệu với các thuộc tính đã khai báo trong ConnectString
  • Close: Đóng cơ sở dữ liệu đang mở
  • CreateCommand: phương thức cho phép gán hay trả về một đối tượng Command ứng với đối tượng Connection, như ví dụ HelloWorld

        SqlConnection sqlconn = new SqlConnection(driver);

        SqlCommand sqlcom = sqlconn.CreateCommand();

        sqlcom.CommandText = "select sTitle from tblHello where pkHelloID=1";

  • BeginTransaction: Phương thức này khai báo bắt đầu một chuyển tác, để kết thúc chuyển tác bạn dùng Table Commit
  • Rollback: trong trương hợp có lỗi trong quá trình thực thi  bạn có thể sử dụng phương thức Rollback để huỷ bỏ các chuyển tác đã thực hiện.
  • Dispose: dùng để huỷ bỏ hay giải phóng đối tượng Connection đang sử dụng

2.2. Command

  • Khai báo và khởi tạo đối tượng

Cách 1:

        SqlCommand sqlcom;

                 sqlcom=new SqlCommand(ssql,sqlconn)

Cách 2:

        SqlCommand sqlcom = new SqlCommand();

                 sqlcom.Connection = sqlconn;

                 sqlcom.CommandType = CommandType.Text;

        sqlcom.CommandText = "select sTitle from tblHello where pkHelloID=1";

  • Phương thức
  • ExcuteReader: dùng để thực thi đọc cơ sở dữ liệu từ bảng cơ sở dữ liệu
  • ExcuteNoneQuery: Dùng để thực thi các phát biểu T-Sql như: Insert, Update, Delete.
  • ExcuteScalar: trả về từ phát biết SQL dạng Select chỉ có một cột một hàng.

2.3. DataReader

- Đối tượng này được net cung cấp để đọc dữ liệu từ bảng cơ sở dữ liệu, nó là đối tượng chỉ phục vụ thao tác đọc dữ liệu(Read only). Trong khi truy xuất dữ liệu nó sẽ giữ kết nối liên tục với database(hướng kết nối).

- Khai báo và khởi tạo đối tượng

        SqlDataReader sqlreader;

                 sqlreader = sqlcom.ExecuteReader();

2.4. DataSet

Là thành phần chính của kiến trúc không kết nối cơ sở dữ liệu, được dùng để nắm giữ dữ liệu của mọi  cơ sở dữ liệu và cho phép thay đổi dữ liệu bên trong đối tượng này để sau đó cập nhật trở lại cơ sở dữ liệu nguồn bằng phương thức Update của đối tượng DataAdapter

Khởi tạo:

                 DataSet dataset = new DataSet();

            DataSet dataset = new DataSet("Mydataset");

Thuộc tính Tables, dataset được dùng để chứa danh sách các đối tượng DataTable

jVí dụ:

  private void button1_Click(object sender, EventArgs e)

        {

            string strQuery = "select * from tblEmployees";

            DataSet dataSet = new DataSet("Employees");

            try

            {

                SqlDataAdapter sqlDataAdapter = new

                SqlDataAdapter(strQuery, Connection.sqlConnection);

                sqlDataAdapter.Fill(dataSet);

                sqlDataAdapter.Dispose();

            }

            catch (Exception ex)

            {

                MessageBox.Show("Error: " + ex.Message);

            }

            this.dataGridView1.DataSource = dataSet.Tables[0];

            //lay ve ten cua doi tuong dataset

            label1.Text ="DataSetName: " + dataSet.DataSetName ;

        }

        private void button2_Click(object sender, EventArgs e)

        {

//khai bao phat bieu sql 1

            string strQuery = "select * from tblEmployees";

            DataSet dataSet = new DataSet("Employees");

            try

            {

                SqlDataAdapter sqlDataAdapter = new

                 SqlDataAdapter(strQuery, Connection.sqlConnection);

                sqlDataAdapter.Fill(dataSet);

//khai bao phat bieu sql 2

                strQuery = "select * from tblContracts";

                sqlDataAdapter = new

                SqlDataAdapter(strQuery, Connection.sqlConnection);

                DataTable dataTable = new DataTable();

                sqlDataAdapter.Fill(dataTable);

                dataSet.Tables.Add(dataTable);              

                sqlDataAdapter.Dispose();

                string dataTableName="";

                foreach(DataTable dt in dataSet.Tables)

                {

                    dataTableName += dt.TableName + " ";

                }

                label1.Text = "Number of tables: " + dataTableName ;

            }

            catch (Exception ex)

            {

                MessageBox.Show("Error: " + ex.Message);

            }

            this.dataGridView1.DataSource = dataSet.Tables[1] ;

        }

Phuong thuc Add, Remove

DataSet dataset=new DataSet();

DataTable datatable=new DataTable(“datatablename”);

dataset.Tables.Add(datatable);

dataset.Tables.Remove(datatable);

xoa voi datatable duoc dat tên

dataset.Tables.Remove(datatablename);

dataset.Tables.RemoveAt(0);

phương thức Clear loại bỏ tất cả các đối tượng trong DataTable

dataset.Tables.Clear();

De dem so dong du lieu trong bang ta co the thuc hien

     int sodong=dataset.Tables[0].Rows.Count;

2.5. DataAdapter

  • OleDataAdapter được xem như bộ đọc dữ liệu từ cơ sở dliệu nguồn và điền chúng vào đối tượng DataSet hay DataTable
  • Khai báo, khởi tạo và giải phóng đối tượng.

     //Khai báo và khởi tạo đối tượng

 string ssql;

 SqlCommand sqlcom;

 SqlConnection  sqlconn;

 SqlDataAdapter sqladapter;

 sqlconn.Open();

Cách 1.

            sqladapter = New OleDbDataAdapter(ssql, sqlconn);

            sqlcom = New SqlCommand(ssql, sqlconn);

Cách 2.

            sqladapter = new SqlDataAdapter(sqlcom);

     //Giải phóng đối tượng

            sqladapter.Dispose();

  • Thuộc tính:

Các thuộc tính bao gồm SelectCommand, InsertCommand, UpdateCommand, DeleteCommand: thực hiện các thao tác select, insert, update, delete dữ liệu

  • Phương thức:
  • Fill: Phương thức thực thi câu lệnh select trong sql rồi điền kết quả cho DataSet hoặc Datatable.
  • Update: gọi lệnh cập nhật các thay đổi vào dữ liệu lên các dữ liệu nguồn 

Điền dữ liệu từ Adapter vào DataSet

Dataset là một thùng chứa dữ liệu không kết nối

  public static DataSet Filldataset(string ssql)

        {

            DataSet dataset = new DataSet();

            opendata();

            try

            {

                sqladapter = new SqlDataAdapter(ssql, sqlconn);

                sqladapter.Fill(dataset);

                sqladapter.Dispose();

            }

            catch (Exception exp)

            {

                closedata();

            }

            closedata();

            return dataset;

        }

Điền dữ liệu vào DataTable

  public static DataTable FillDatatable(string ssql)

        {

            opendata();

            DataTable datatable = new DataTable();

            try

            {

                sqladapter = new SqlDataAdapter(ssql, sqlconn);

                sqladapter.Fill(datatable);

                sqladapter.Dispose();

            }

            finally

            {

                closedata();

            }

            closedata();

            return datatable;

        }

2.6. DataTable

Datatable là thể hiện của một bảng trong cơ sở dữ liệu bao gồm một số thuộc tính, phương thức sau:

  • TableName: tên của bảng dữ liệu
  •  Columns: danh sách các cột
  •  Rows: danh sách các mẫu tin
  • PrimaryKey: danh sách các cột là khóa chính
  • NewRow(): tạo một mẫu tin mới
  • DataColumn: đại diện cho một cột trong bảng

+ ColumnName: tên cột

+ DataType: kiểu dữ liệu

  • DataRow: đại diện cho mẫu tin trong bảng
  • RowState: trạng thái Added, Modified, Deleted,…
  • [i]: truy xuất đến cột i
  • Delete(): đánh dấu xóa mẫu tin

Ví dụ:

private void button1_Click(object sender, EventArgs e)

        {

            string strQuery = "select top 10 * from tblEmployees";

//khoi tao doi tuong DataTable

            dataTable = new DataTable("Employees");

            try

            {

                SqlDataAdapter sqlDataAdapter = new

                SqlDataAdapter(strQuery, Connection.sqlConnection);

//dien du lieu vao datatable

                sqlDataAdapter.Fill(dataTable);

                sqlDataAdapter.Dispose();

            }

            catch (Exception ex)

            {

                MessageBox.Show("Error: " + ex.Message);

            }

//gan du lieu va dataGrid voi thuoc tinh DataSource

            this.dataGridView1.DataSource = dataTable;

            label1.Text= dataTable.TableName ;

        } 

// thuoc tinh DataRow tra ve cac mau tin dang chua trong doi tuong DataTable

        private void button2_Click(object sender, EventArgs e)

        {

            if (dataTable != null)

            {

                string name = "";

                foreach (DataRow dataRow in dataTable.Rows)

                {

                    name += Convert.ToString(dataRow[1]) + "\n";

                }

                label1.Text = name;

            }

        }

// thuoc tinh Columns tra ve tap doi tuong DataColumn bao gom danh sach cot du lieu cua bang chua trong doi tuong DataTable

        private void button3_Click(object sender, EventArgs e)

        {

            if (dataTable != null)

            {

                string name = "";

                foreach (DataColumn dataColumn in dataTable.Columns)

                {

                    name += Convert.ToString(dataColumn.ColumnName) + "\n";

                }

                label1.Text = name;

            }

        }

 

3. DataGridView

- Là đối tượng cho phép hiển thị dữ liệu trong Dataset hoặc Datatale lên  form. Các thuộc tính DataSource dùng để trỏ đến nguồn dữ liệu cần hiển thị.

- Có cấu trúc dạng bảng, có thể hiển thị nhiều bảng hay một tùy theo dữ liệu có trong Dataset hay DataTable.

Ví dụ . Tạo cơ sở dữ liệu có tên QLSV gồm bảng TblKhoa( makhoa, tenkhoa) sau đó:

Tạo form tìm kiếm theo mã và tên khoa. Kết quả tìm được hiển thị lên DataGridView.

 

Hiển thị dữ liệu bằng DataGridView

  • Mã lệnh cho lớp clstimkiem:

using System.Data.OleDb

 Class Clstimkiem: Clsketnoi{

    Public string stk;

    Public  OleDbDataReader dr;

    Public  OleDbCommand cmd;

    Public  DataTable dt;

    Public dgr= New DataGridView();

    Public string nameQr;

    Public void kt(string _stk , string_nameQr, DataGridView _dgr)

     {

        stk = _stk;

        nameQr = _nameQr;

        dgr = _dgr;

      }

    Public void hamtimkiem(String xtk, string nameQr )

     {

        connecDatabase();

        ds = New DataSet();

        da = New OleDbDataAdapter(xtk, conn);

        da.Fill(ds, "nameQr");

        dgr.DataSource = ds;

        dgr.DataMember = "nameQr";

        closeDatabase();

    }

}

  • Mã lệnh cho nút TÌM:

 

Clstimkiem _clstimkiem =New Clstimkiem();

 

        string xtk1 = "select * from Qrtkkhoa where  (Makhoa like'" & this.txtmk.Text & "') &&(Tenkhoa like'" & this.txttenkhoa.Text & "')";

        string xtk2 = "select * from Qrtkkhoa where (Makhoa like'%" & this.txtmk.Text & "%') And (Tenkhoa like'%" & this.txttenkhoa.Text & "%')";

        string stk = "";

         DataGridView dgr= dgrtkmakhoa;

        string nameQr = "Qrtkkhoa";

        _clstimkiem.closeDatabase();

        If (ckbcx.Checked == True)

     {

                              MessageBox.Show("Tìm kiếm chính xác");

                 ckbgcx.Enabled = False;

                              stk = xtk1;

     }

        Else

     If( ckbgcx.Checked = True)

     {

                              MessageBox.Show("Tìm kiếm gần chính xác");

                 ckbcx.Enabled = False;

                              stk = xtk2;

     }

                 // Gọi hàm khởi tạo

          _clstimkiem.kt(stk, nameQr, dgr);

                 // Gọi hàm tìm kiếm

                 _clstimkiem.hamtimkiem(_clstimkiem.stk, _clstimkiem.nameQr);

Tag: lập trình C#lap trinh C#tự học lập trình C#tu hoc C#tìm hiểu C#tim hieu C#Các thành phần của ADO.NET

Đang phát triển ...

Bài viết liên quan

Giới thiệu ADO.NET trong C#.NET

ADO.NET là một khái niệm trong C#.NET, Vậy để hiểu hơn về ADO.NET chúng ta hãy tìm hiểu bài viết giới thiệu ADO.NET trong C#.NET

Lập trình hướng đối tượng với C#.NET

Để hiểu hơn về lập trình C#.NET và biết được lập trình hướng đối tượng với  C#.NET, chúng ta hãy cùng tìm hiểu bài viết sau.

Giới thiệu lập trình hướng đối tượng với C#.NET

Giới thiệu lập trình hướng đối tượng với C#.NET là bài viết chúng ta sẽ tìm hiểu ngay sau đây.

Một số liên kết, thực đơn và menu trong C#.NET

Để hiểu hơn về C#.NET và sự liên kết giữa các Form trong ứng dụng, hộp thoại và menu trong C#.NET, chúng ta hãy cùng tìm hiểu bài viết.

Các control trên toolbox trong C#.NET.

Bài viết giới thiệu về các control trên toolbox  trong C#.NET. Để hiểu hơn về bài viết, chúng ta cùng tìm hiểu bài viết.

WINDOWS FORM trong C#.NET

Bài viết này xin giới thiệu tới các bạn về WINDOWS FORM trong C#.NET và các khái niệm về WINDOWS FORM trong C#.NET

Chương trình con trong C#.NET

Bài viết sau đây sẽ giới thiệu tới các bạn về chương trình con trong C#.NET. Để hiểu rõ hơn, chúng ta hãy tìm hiểu bài viết.

Các kiểu dữ liệu có cấu trúc trong C#.NET

Bài viết sau đây sẽ giới thiệu tới các bạn các kiểu dữ liệu có cấu trúc trong C#.NET. Để hiểu hơn chúng ta hãy cùng nhau tìm hiểu bài viết.

Các câu lệnh trong C#.NET

Để hiểu hơn về lập trình C# và các câu lệnh trong C#.NET, chúng ta hãy cùng nhau đi tìm hiểu bài viết sau đây.

Các thành phần của ngôn ngữ C#.NET

Bài viết sau đây sẽ giới thiệu tới các bạn về các thành phần của ngôn ngữ C#.NET, chúng ta hãy cùng nhau tìm hiểu bài viết.

Giới thiệu về NET Framework và C#.NET

Bài viết này sẽ giới thiệu tới các bạn bài viết về lập trình C# và giới thiệu về  NET Framework và C#.NET. 

Tấn công ransomware cực lớn trên toàn cầu, tải về bản vá lỗi ngay

Tấn công ransomware cực lớn trên toàn cầu, tải về bản vá lỗi ngay

Cuộc tấn công vào NHS đã sử dụng một dạng ransomware có tên Wanacryptor và nhắm mục tiêu vào hàng nghìn tổ chức ở 74 quốc gia. Ransomware là một dạng tấn công mạng có liên quan đến việc các hacker nắm quyền kiểm soát máy tính hoặc thiết bị di động và yêu cầu đòi tiền chuộc. Bằng nhiều cách, những kẻ tấn công tải phần mềm độc hại vào thiết bị và mã hóa thông tin của nạn nhân.

Kỹ thuật tìm kiếm và thay thế từ cơ bản đến nâng cao trong MS Office (Word)

Kỹ thuật tìm kiếm và thay thế từ cơ bản đến nâng cao trong MS Office (Word)

Trong Word nói riêng, Office nói chung, có lẽ ai cũng biết chức năng tìm kiếm và thay thế nội dung văn bản, nhưng ngoài ra, còn nhiểu chức năng khác trong hộp thoại tìm kiếm và thay thế mà không phải ai cũng biết để sử dụng. Trong đó có tìm kiếm và thay thế định dạng, sử dụng các ký hiệu đại diện, các ký tự đặc biệt… 

Bài 6: Thủ thuật outlook 2010

Bài 6: Thủ thuật outlook 2010

Bài viết giới thiệu đến các bạn một số thủ thuật được dùng trong outlook 2010, để giúp công việc của các bạn được dễ dàng hơn.

Bài 5: Quản lý các thông tin trong  outlook 2010

Bài 5: Quản lý các thông tin trong outlook 2010

Bài viết giới thiệu về phương pháp quản lý thông tinn trong outlook 2010. Chúng ta hãy cùng tìm hiểu xem có điểm gì khác và nổi bật so với outlook 2007

Bài 4: Sử dụng lịch làm việc một cách hiệu quả outlook 2010

Bài 4: Sử dụng lịch làm việc một cách hiệu quả outlook 2010

Để công việc của đạt hiệu quả cao hơn, chúng ta hãy cùng nhau tìm hiểu cách sử dụng lịch làm việc một cách hiệu quả hơn trong outlook 2010

Bài 3: Quản lý hộp thư của bạn về dung lượng và lưu trữ outlook 2010

Bài 3: Quản lý hộp thư của bạn về dung lượng và lưu trữ outlook 2010

Bài viết sau đây sẽ giới thiệu về mục quản lý hộp thư của bạn về dung lượng và lưu trữ trong microsoft outlook 2010.

Hàm SLEEP trong PHP

Hàm SLEEP trong PHP

Có những lúc trong công việc lập trình ta cần mã tạm dừng theo một thời gian định trước thì trong php có hỗ trợ hàm sleep để các bạn làm điều này.

Hàm Rand trong PHP

Hàm Rand trong PHP

Đôi lúc chúng ta lập trình cần đến những con số sinh ngẫu nhiên vào những công việc khách nhau hôm này mình xin giới thiệu với mọi người hàm sinh số ngẫu nhiên trong PHP

Bài 9: Giới thiệu lập trình hướng đối tượng trong PHP (OOP)

Bài 9: Giới thiệu lập trình hướng đối tượng trong PHP (OOP)

Các bạn tự học PHP nên biết về lập trình hướng đối tượng trong PHP, kỹ thuật lập trình hỗ trợ công nghệ đối tượng

Bài 8: Hàm có sẵn thông dụng trong PHP

Bài 8: Hàm có sẵn thông dụng trong PHP

Hàm thông dụng trong php cần biết, các bạn mới bắt đầu lên nắm rõ ý nghĩa cấu trúc cách dùng những hàm này để bổ trợ kiến thức sau này

Bài 7: Hàm trong PHP

Bài 7: Hàm trong PHP

Hàm do người sử dụng định nghĩa cho phép bạn xử lý những tác vụ thường lặp đi lặp lại trong ứng dụng. cách khai báo, cú pháp của hàm trong php