Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Kết nối với MySQL trong lập trình C# [Hỏi đáp]

  1. #1
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Post Kết nối với MySQL trong lập trình C# [Hỏi đáp]

    Hỏi: Xin hướng dẫn cách kết nối CSDL MySQL từ chương trình VC# trong môi trường Visual Studio 2005

    Đáp:
    Bạn có thể lập trình VC# (hay VJ#, VB .Net) truy xuất database MySQL bằng cách dùng 1 trong 4 giao tiếp lập trình sau:

    1. ODBC .Net: đây là giao tiếp chuẩn hóa nên có tính tổng quát hóa cao nhất, bạn truy xuất database của MySQL và của các hệ quản trị CSDL khác thông qua các đối tượng chuẩn của Microsoft (trong namespace System.Data.Odbc).

    2. MySQL Provider đặc dụng, thí dụ như MySQLDirect, phương pháp này cũng giống như phương pháp 1, chỉ có điều là bạn phải cài và sử dụng các đối tượng đặc dụng của 1 hãng khác chứ không dùng các đối tượng ODBC chuẩn của Microsoft.

    3. OLEDB .Net, phương pháp này rất giống như phương pháp 1, chỉ khác là thay vì dùng các đối tượng ODBC .Net, bạn sẽ dùng các đối tượng OLEDB .Net. Mặc dù các đối tượng OLEDB .Net cũng do Microsoft cung cấp, nhưng Microsoft khuyến cáo họ sẽ không hỗ trợ các đối tượng OLEDB .Net nữa.

    4. Thư viện lập trình API đặc dụng bằng C++, thí dụ như thư viện mysqlclient. Đây là phương pháp có tính tổng quát hóa thấp nhất, vì đoạn lệnh truy xuất database trong ứng dụng chứa rất nhiều lệnh gọi hàm API của thư viện đặc dụng.

    Tóm lại trong 4 phương pháp trên, chỉ có phương pháp 1 là tổng quát nhất, do đó bạn nên lập trình dùng phương pháp này để truy xuất database MySQL. Thí dụ hàm Testdb() sau đây cho phép tạo 1 table mới trên database 'test' do MySQL server chạy trên máy 'hiepdesktop' quản lý, hàm này dùng các đối tượng ODBC .Net sau: OdbcConnection, OdbcCommand, OdbcDataReader.


    Visual C# Code:
    1. using Console = System.Console;
    2. using System.Data.Odbc;
    3. private void Testdb() {
    4.   try{
    5.      //Connection string dùng DSN và MyODBC 3.51
    6.      string MyConString = "DSN=MySQL";
    7.      //hoặc Connection string dùng trực tiếp Provider MyODBC 3.51
    8.      /*string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +
    9.                            "SERVER=hiepdesktop;" +
    10.                            "DATABASE=test;" +
    11.                            "UID=root;" +
    12.                            "PASSWORD=lachan;" +
    13.                            "OPTION=3";
    14.      */
    15.      //tạo connection tới database
    16.      OdbcConnection MyConnection = new OdbcConnection(MyConString);
    17.      MyConnection.Open();
    18.       //xóa table testdb nếu đã có rồi
    19.      OdbcCommand MyCommand = new OdbcCommand("DROP TABLE IF EXISTS testdb",MyConnection);
    20.      MyCommand.ExecuteNonQuery();
    21.       //Tạo lại table testdb có 3 field
    22.      MyCommand.CommandText = "CREATE TABLE testdb(hoten varchar(40),namsinh int, diachi varchar(50))";
    23.      MyCommand.ExecuteNonQuery();
    24.       //Thử thêm 1 record dữ liệu
    25.      MyCommand.CommandText = "INSERT INTO testdb VALUES('Nguyen Van Hiep',1957,'8A Lu Gia, P15,Q11')";
    26.      MyCommand.ExecuteNonQuery();
    27.      //Thử thêm 1 record dữ liệu nữa
    28.      MyCommand.CommandText = "INSERT INTO testdb VALUES('Nguyen Lac Han',1994,'245/4 Ly Thuong Kiet, P15,Q11')";
    29.      MyCommand.ExecuteNonQuery();
    30.      //Thử thêm 1 record dữ liệu nữa
    31.      MyCommand.CommandText = "INSERT INTO testdb VALUES('Nguyen Luong Hoa',2002,'245/4 Ly Thuong Kiet, P15,Q11')";
    32.      MyCommand.ExecuteNonQuery();
    33.      //Thử thêm 1 record dữ liệu nữa
    34.      MyCommand.CommandText = "INSERT INTO testdb VALUES('Huynh Thoai Loan',1965,'245/4 Ly Thuong Kiet, P15,Q11')";
    35.      MyCommand.ExecuteNonQuery();
    36.       //Hiệu chỉnh thử 1 field của 1 số record thỏa điều kiện
    37.      MyCommand.CommandText = "UPDATE testdb SET namsinh=1960 WHERE namsinh=1957";
    38.      MyCommand.ExecuteNonQuery();
    39.       //Đếm số record hiện có
    40.      MyCommand.CommandText = "SELECT COUNT(*) as TRows FROM testdb";
    41.      Console.WriteLine("Total Rows: " + MyCommand.ExecuteScalar());
    42.       //Duyệt đọc và hiển thị các record trong table
    43.      MyCommand.CommandText = "SELECT * FROM testdb";
    44.      OdbcDataReader MyDataReader;
    45.      MyDataReader = MyCommand.ExecuteReader();
    46.      while (MyDataReader.Read()) {
    47.     Console.WriteLine("Data: " + MyDataReader.GetString(0) + ", " +
    48.   MyDataReader.GetInt32(1) + ", " +
    49.             MyDataReader.GetString(2)); //BIGINTs not supported by MyODBC
    50.      }
    51.       //Đóng các đối tượng đã dùng
    52.      MyDataReader.Close();
    53.      MyConnection.Close();
    54.   }
    55.   catch (OdbcException MyOdbcException) {//Catch tất cả lỗi exception
    56.      for (int i=0; i < MyOdbcException.Errors.Count; i++) {
    57.    Console.Write("ERROR #" + i + "\n" + "Message: " +
    58.         MyOdbcException.Errors[i].Message + "\n" + "Native: " +
    59.         MyOdbcException.Errors[i].NativeError.ToString() + "\n" +
    60.         "Source: " + MyOdbcException.Errors[i].Source + "\n" +
    61.    "SQL: " + MyOdbcException.Errors[i].SQLState + "\n");
    62.      }
    63.    }
    64. }

    Một số lưu ý khi lập trình dùng ODBC .Net:

    1. Cài đặt MySQL Server trên máy nào đó và lưu ý tên (địa chỉ) của máy đó. Nhớ cấu hình cho MySQL Server sử dụng ít nhất protocol TCP/IP để giao tiếp với các máy client.

    2. Download "MySQL ODBC 3.51 Driver" và cài đặt nó trên máy client (máy sẽ chạy ứng dụng do bạn viết). Bạn có thể download "MySQL ODBC 3.51 Driver" ở địa chỉ http://dev.mysql.com/downloads/connector/odbc/3.51.html.

    3. Nếu lập trình dùng DSN trong connection string để nối kết với MySQL Server, bạn phải tạo trước DSN kết hợp với database cần truy xuất. Bạn hãy chạy Control Panel.Administrative Tools.Data Source (ODBC) để tạo DSN kết hợp với database cần truy xuất.

    4. Nếu lập trình dùng DSN trong connection string thì đoạn lệnh mà bạn viết hoàn toàn độc lập với công nghệ quản lý database, vị trí vật lý database. Cụ thể hàm Testdb() mà chúng tôi viết ở trên hoàn toàn độc lập với công nghệ quản lý database và vị trí vật lý của database, nó có thể truy xuất bất kỳ database nào của hệ quản trị database nào, bạn chỉ cần vào tool Data Source (ODBC) của Windows và hiệu chỉnh lại các thông số liên quan đến database cần truy xuất là đủ


    Theo goctinhoc
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  2. #2
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà nội
    Bài viết
    77

    dùng giao tiếp ODBC với MySQL có hạn chế trong việc thao tác DL unicode,tôi đã thử với ODBC và chưa biết cách làm sao để chuyển DL unicode từ VS vào MySQL
    nếu muốn thao tác DL mà ko lo nhiều về unicode thì các bạn nên dùng giao tiếp MySQL Connector .NET,có thể down bộ cài của nó trên http://dev.mysql.com/downloads/connector/net/5.0.html
    cài xong bạn nhớ add reference... cái thư viện MySQL.Data vào project
    nó cũng có đầy đủ các đối tượng thao tác DL như các giao tiếp khác
    Sống ở trên đời cần có một TẤM LÒNG để lúc đói còn có chỗ mà nhét THỨC ĂN

Các đề tài tương tự

  1. Copy data từ SQL Server qua MySQL | Chuyển database từ SQL Server sang MySQL?
    Gửi bởi huynhngocduc_63 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 10
    Bài viết cuối: 16-12-2014, 01:27 PM
  2. Viết 1 chương trình kết nối CSDL Mysql bằng C lỗi: Cannot open include file: 'mysql.h': No such file or directory?
    Gửi bởi huulinh21191 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 2
    Bài viết cuối: 14-11-2012, 07:36 PM
  3. MySQL Community Server vs MySQL Cluster khác nhau như thế nào?
    Gửi bởi longtth trong diễn đàn Thắc mắc MySQL và SQLite
    Trả lời: 1
    Bài viết cuối: 27-07-2011, 06:06 PM
  4. Kết nối với MySQL trong lập trình C#
    Gửi bởi Xcross87 trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 28-06-2007, 03:57 PM
  5. Sao lưu và khôi phục lại MySQL với mysql-zrm trên Debian Sarge
    Gửi bởi neverland87 trong diễn đàn Thủ thuật, Tutorials Database
    Trả lời: 0
    Bài viết cuối: 05-03-2007, 05:08 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn