C# nhúng‎ > ‎Cơ sở dữ liệu‎ > ‎

1.C# kết nối với MySQL

Kết nối với MySQL Server

          Sử dụng ADO.Net

          Giới thiệu ADO.Net

ADO.net là một nhóm thư viện được sử dụng để viết các chương trình kết nối cơ sở dữ liệu mạnh mẽ, có thể kết nối với các loại cơ sở dữ liệu như: Microsoft SQL Server, Microsoft Access, Oracle, XML, etc. ADO.Net được viết dựa trên nền tảng .Net. Các hoạt động truy xuất, chỉnh sửa cơ sở dữ liệu dựa vào các lớp DataSet.

          Sử dụng thư viện kết nối MysSQL Connector/Net

Để kết nối với MySQL bằng .Net, cụ thể trong trường hợp này sử dụng C# ta sử dụng thư việc MysSQL Connector/Net (của chính hãng, miễn phí). Để sử dụng những lớp này ta phải trỏ đến (reference) thư viện MySql.Data.dll. Sau khi được trỏ đến chúng ta sử dụng khai báo USES để sử dụng MySql.Data namespace.

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

            Giới thiệu:

MySQL Connector/Net cho phép ta tạo các chương trình ứng dụng trên nền tảng đồ họa Windows. Khi ứng dụng chạy nó sẽ kết nối với cơ sở dữ liệu. Để kết nối với cơ sở dữ liệu bạn có thể khai báo một biến thuộc lớp MySqlconnection được định nghĩa trong namspace  MySql.Data.MySqlClient. Trước khi sử dụng lớp này bạn phải khai báo Uses.

Để kết nối với CSDL, bạn phải khai báo một biến MySqlConnection sử dụng một trong hai constructors. Constructor mặc định cho phép bạn khai báo biến mà không chỉ ra cách kết nối sẽ được thực thi. Constructor thứ hai chứa một tham số là giá trị của một biến kiểu String. Cú pháp như sau:

public MySqlConnection(string connectionString);

 

Nếu muốn bạn có thể trước hết tạo một chuỗi quản lý việc kết nối, sau đó truyền chuỗi đó cho constructor thứ hai, điều đó được làm như sau:

private void btnConnect_Click(object sender, System.EventArgs e)
{
        string strConnection = "";
        MySqlConnection conSQL = new MySqlConnection(strConnection);
}

Bạn có thể trực tiếp khởi tạo chuỗi cần thiết  (nhưng không thường sử dụng cách này) trong constructor thứ hai khi khai báo biến

 
private void btnConnect_Click(object sender, System.EventArgs e)
{
         MySqlConnection conSQL = new MySqlConnection("");
}
Nếu bạn thích sử dụng constructor mặc định, bạn có thể trước tiên khai báo một giá trị biến. Để truyền giá trị cho cho 
constructor mặc định, lớp MySqlConnection được trang bị với một thuộc tính được gọi là ConnectionString. Bạn có 
thể sử dụng nó như sau: 
 
private void btnConnect_Click(object sender, System.EventArgs e)
{
       string strConnection = "";
       MySqlConnection conServer = new MySqlConnection();
 
       conServer.ConnectionString = strConnection;
}

Để sử dụng một MySqlConnection object, chúng ta phải cung cấp một số thông tin kết nối. Những thông tin này được kết hợp lại thành một chuỗi kết nối, mỗi một thông tin phục vụ cho kết nối được gọi là một key như bên dưới đây, mỗi key sẽ cách nhau bằng một dấu ; cấu trúc như sau:

Key1=Value1;Key2=Value2;Key_n=Value_n

Bất cứ phần nào trong string này đều không phân biệt chữ thường hay hoa. Chú ý tất cả các thành phần trong chuỗi này sẽ được truyền cho constructor thứ hai

 

MySqlConnection conServer = new MySqlConnection("Key1=Value1;Key2=Value2;Key_n=Value_n");

Hoặc gán chuỗi này cho thuộc tính MySqlConnection.ConnectionString của constructor MySqlConnection

MySqlConnection conServer = new MySqlConnection();

string strConnection = "Key1=Value1;Key2=Value2;Key_n=Value_n";

 

conServer.ConnectionString = strConnection

 

Nguồn (Source) của dữ liệu:

        Để thiết lập một kết nối bạn phải  cho biết máy tính mà bạn muốn kết nối đến, máy tính đó phải được cài MySql. Ví dụ dưới đây

private void btnLoad_Click(object sender, System.EventArgs e)

{

        MySqlConnection cnnVideos = new MySqlConnection("Data Source=localhost;");

 

}

Cơ sở dữ liệu:

            Nếu bạn đã tạo một cơ sở dữ liệu và bạn muốn kết nối vào đó, bạn có thể chỉ ra trong chuỗi kết nối của bạn. 

 Nếu bạn không có ý định kết nối đến một cơ sở dữ liệu cụ thể nào, bạn không cần phải chỉ ra.

Để xác định cơ sở dữ liệu mà bạn muốn kết nối đến, chuỗi kết nối phải bao gồm một thuộc tính tên Database hoặc 

Initial Catalog. Thuộc tính này cho phép bạn xác định tên CSDL mà bạn muốn kết nối đến.

 Nếu bạn đang không kết nối đến một cơ sở dữ liệu hiện hữu, bạn có thể bỏ qua thuộc tính này, thay vào đó bạn gán thuộc tính rỗng,

 dưới đây là ví dụ

MySqlConnection conDatabase = new MySqlConnection("Address=localhost;Database=; ");

Một cách thay thế để gán một thuộc tính rỗng, dấu nháy đơn, chuỗi cho thuộc tính này. Sau đây là ví dụ:

MySqlConnection conDatabase = new MySqlConnection("Network Address=localhost;Initial Catalog=''; ");

Như đề cập ở trên, thuộc tính Database hoặc Initial Catalog là một Optional, 

đặc biệt trong trường hợp nếu bạn chỉ muốn kết nối đến một máy tính mà chưa muốn chỉ ra cơ sở dữ liệu để kết nối.

Bảo mật:

Một khía cạnh quan trọng của việc tạo ra một kết nối đến một máy tính là vấn đề bảo mật. Thậm chí trong trường hợp bạn đang thiết kế một ứng dụng chạy trên một máy tính đơn, bạn cũng cần phải quan tâm đến vấn đề này. Bảo mật liên quan đến những thuộc tính được khai báo trong phần constructor kết nối, không chỉ là cách làm thế nào bảo vệ cơ sở dữ liệu của bạn.

Để hổ trợ việc bảo mật, chuỗi kết nối của MySqlConnection bao gồm một thuộc tính được gọi là Persist Security Info có thể mang các giá trị như: true, false, yes, no.Nếu bạn thiết lập một kết nối tin tưởng hay đơn giản, kết nối này không cần được xác nhận, bạn có thể gán giá trị là true. Sau đây là ví dụ:

private void btnLoad_Click(object sender, System.EventArgs e)

{

        MySqlConnection cnnVideos = new MySqlConnection(

                       "Network Address=localhost;Initial Catalog='Famille';Persist Security Info=true;");

         Tên đăng nhập và mật khẩu:

Nếu bạn muốn tạo một kết nối, hoặc cơ sở dữ liệu của bạn yêu cầu xác nhận, bạn phải gán giá trị cho phần tên đăng nhập,

 và mật khẩu trong chuỗi khai báo kết nối. Sau đây là ví dụ:

MySqlConnection conDatabase = new MySqlConnection("Server=localhost;
Persist Security Info=no;User ID=MammaMia");
private void btnLoad_Click(object sender, System.EventArgs e)
{
        MySqlConnection cnnVideos = new MySqlConnection("Network Address=localhost;" +
                                                       "Initial Catalog='Famille';" +
                                                       "Persist Security Info=no;" +
                                                             "User Name='root';" +
                                                         "Password='R0gerMiLl@'");
}

Các thuộc tính bổ sung:

Ngoài các thuộc tính quan trọng được sử dụng trong chuỗi kết nối kể trên, ngoài ra còn các thuộc tính khác như: Encrypt, Connection Timeout (or Connect Timeout), CharSet (or Character Set), Port, Protocol, Logging, Allow Batch, Shared Memory Name, Allow Zero Datetime, Old Syntax (or OldSyntax), Connection Lifetime, Max Pool Size, Min Pool Size, Pooling, and Pipe Name (or Pipe).

Sau khi tạo chuỗi kết nối, khi ứng dụng được thực thi, chương trình biên dịc sẽ “Scan” chuỗi kết nối để tiến hành việc kết nối. Nếu nó phát hiện một unknown key nào, nó sẽ phát sinh ra một cảnh báo lỗi và quá trình kết nối sẽ không thực hiện được.


Comments