C# - Connect to MySQL

Code mẫu kết nối C# với MySQL.

Cài đặt các thư viện cần thiết

Sử dụng Nuget Package Manager để cài đặt thư viện MySql.Data

1Install-Package MySql.Data

Hàm kết nối và hủy kết nối đến MySQL

Sử dụng 4 thông số cần thiết để kết nối đến MySQL: Server, tên cơ sở dữ liệu, username và mật khẩu.

12345678910111213141516171819202122232425262728293031323334using MySql.Data.MySqlClient;

MySqlConnection connection;

private bool Connect()
{
    const string SERVER = "localhost";
    const string DATABASE = "db_shop";
    const string UID = "root";
    const string PASSWORD = "";

    string CONNECTION_STRING =
        String.Format("SERVER={0};DATABASE={1};UID={2};PASSWORD={3};",
                        SERVER, DATABASE, UID, PASSWORD);

    this.connection = new MySqlConnection(CONNECTION_STRING);

    try
    {
        connection.Open();
        Console.WriteLine("Connected DB");
        return true;
    }
    catch (Exception e)
    {
        Console.WriteLine("Cannot connect DB: " + e.ToString());
        return false;
    }
}

private void Close()
{
    this.connection.Close();
}

MySqlDataReader / Thêm dữ liệu - Insert - C (CRUD)

Thêm dữ liệu vào cơ sở dữ liệu MySQL và nhận về id vừa thêm, sử dụng ExecuteNonQuery.

12345678910111213private long Insert(string name, int price, long createdAt, bool isPublished)
{
    string queryString = String.Format("INSERT INTO products(name, price, createdAt, isPublished) VALUES('{0}', {1}, {2}, {3});", name, price, createdAt, isPublished);
    
    MySqlCommand command = new MySqlCommand();
    command.Connection = connection;
    
    command.CommandText = queryString;
    command.ExecuteNonQuery();

    command.CommandText = "SELECT LAST_INSERT_ID()";
    return Convert.ToInt64(command.ExecuteScalar());
}

MySqlDataReader / Lấy dữ liệu - Select - R (CRUD)

Lấy dữ liệu trong cơ sở dữ liệu sử dụng ExcecuteReader.

1234567891011121314151617181920212223242526272829private MySqlDataReader Select()
{
    string queryString = String.Format("SELECT * FROM products");

    MySqlCommand command = new MySqlCommand();
    command.Connection = connection;

    command.CommandText = queryString;
    return command.ExecuteReader();
}

private MySqlDataReader Select(long id)
{
    string queryString = String.Format("SELECT * FROM products WHERE id={0}", id);

    MySqlCommand command = new MySqlCommand();
    command.Connection = connection;

    command.CommandText = queryString;
    return command.ExecuteReader();
}

/*
while (reader.Read())
{
    Console.WriteLine(reader["id"] + " - " + reader["isPublished"]);
    Console.WriteLine(reader.GetInt64("id") + " - " + reader.GetBoolean("isPublished"));
}
*/

MySqlDataReader / Cập nhật dữ liệu - Update - U (CRUD)

Cập nhật 1 dòng dữ liệu bất kỳ sử dụng ExecuteNonQuery.

12345678910private bool UpdatePrice(long id, int price)
{
    string queryString = String.Format("UPDATE products SET price={0} WHERE id={1};", price, id);

    MySqlCommand command = new MySqlCommand();
    command.Connection = connection;

    command.CommandText = queryString;
    return command.ExecuteNonQuery() == 1;
}

MySqlDataReader / Xóa dữ liệu - Delete - D (CRUD)

Xóa 1 dòng dữ liệu sử dụng ExecuteNonQuery.

12345678910private bool Delete(long id)
{
    string queryString = String.Format("DELETE products id={0};", id);

    MySqlCommand command = new MySqlCommand();
    command.Connection = connection;

    command.CommandText = queryString;
    return command.ExecuteNonQuery() == 1;
}

MySqlDataAdapter / Lấy dữ liệu - Select - R (CRUD)

123456789101112131415161718192021222324252627282930private DataSet SelectDS()
{
    this.Connect();

    string queryString = String.Format("SELECT * FROM products");
            
    MySqlCommand command = new MySqlCommand();
    command.Connection = connection;
    command.CommandText = queryString;

    MySqlDataAdapter da = new MySqlDataAdapter();
    da.SelectCommand = command;

    DataSet ds = new DataSet();
    da.Fill(ds);

    da.Dispose();
    this.Close();

    return ds;
}

/*
DataSet ds = this.SelectDS();

foreach (DataRow row in ds.Tables[0].Rows)
{
    Console.WriteLine(row["name"]);
}
*/