文件首頁
MySQL Connector/NET 開發人員指南
相關文件 下載本手冊
PDF (美式 Letter) - 1.3Mb
PDF (A4) - 1.3Mb


6.1.2 MySqlCommand 物件

與 MySQL 資料庫建立連線後,下一步是讓您能夠執行資料庫操作。此工作可透過使用 MySqlCommand 物件來達成。

建立之後,您可以呼叫三個主要的感興趣方法

  • ExecuteReader 以查詢資料庫。結果通常會在 ExecuteReader 建立的 MySqlDataReader 物件中傳回。

  • ExecuteNonQuery 以插入、更新和刪除資料。

  • ExecuteScalar 以傳回單一值。

建立 MySqlCommand 物件後,您可以在其上呼叫先前的方法之一,以執行資料庫操作,例如執行查詢。結果通常會傳回到 MySqlDataReader 物件中,然後進行處理。例如,結果可能會以以下程式碼範例示範的方式顯示。

using System;
using System.Data;

using MySql.Data;
using MySql.Data.MySqlClient;

public class Tutorial2
{
    public static void Main()
    {
        string connStr = "server=localhost;user=root;database=world;port=3306;password=******";
        MySqlConnection conn = new MySqlConnection(connStr);
        try
        {
            Console.WriteLine("Connecting to MySQL...");
            conn.Open();

            string sql = "SELECT Name, HeadOfState FROM Country WHERE Continent='Oceania'";
            MySqlCommand cmd = new MySqlCommand(sql, conn);
            MySqlDataReader rdr = cmd.ExecuteReader();

            while (rdr.Read())
            {
                Console.WriteLine(rdr[0]+" -- "+rdr[1]);
            }
            rdr.Close();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }

        conn.Close();
        Console.WriteLine("Done.");
    }
}

建立並開啟連線後,程式碼接著會建立 MySqlCommand 物件。然後,要執行的 SQL 查詢會傳遞至 MySqlCommand 建構函式。ExecuteReader 方法接著會用來產生 MySqlReader 物件。MySqlReader 物件包含在 MySqlCommand 物件上執行的 SQL 所產生的結果。當在 MySqlReader 物件中取得結果時,即可處理結果。在此案例中,資訊會透過 while 迴圈列印出來。最後,會透過叫用 Close 方法來處置 MySqlReader 物件。

下一個範例顯示如何使用 ExecuteNonQuery 方法。

執行 ExecuteNonQuery 方法呼叫的程序較為簡單,因為不需要建立物件來儲存結果。這是因為 ExecuteNonQuery 僅用於插入、更新和刪除資料。以下範例說明對 Country 表格進行的簡單更新

using System;
using System.Data;

using MySql.Data;
using MySql.Data.MySqlClient;

public class Tutorial3
{
    public static void Main()
    {
        string connStr = "server=localhost;user=root;database=world;port=3306;password=******";
        MySqlConnection conn = new MySqlConnection(connStr);
        try
        {
            Console.WriteLine("Connecting to MySQL...");
            conn.Open();

            string sql = "INSERT INTO Country (Name, HeadOfState, Continent) VALUES ('Disneyland','Mickey Mouse', 'North America')";
            MySqlCommand cmd = new MySqlCommand(sql, conn);
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }

        conn.Close();
        Console.WriteLine("Done.");
    }
}

建構查詢、建立 MySqlCommand 物件,並在 MySqlCommand 物件上呼叫 ExecuteNonQuery 方法。您可以使用 mysql 來存取您的 MySQL 資料庫,並驗證是否已正確執行更新。

最後,您可以使用 ExecuteScalar 方法傳回單一值。同樣地,這很簡單,因為不需要 MySqlDataReader 物件來儲存結果,而是改用變數。以下程式碼說明如何使用 ExecuteScalar 方法

using System;
using System.Data;

using MySql.Data;
using MySql.Data.MySqlClient;

public class Tutorial4
{
    public static void Main()
    {
        string connStr = "server=localhost;user=root;database=world;port=3306;password=******";
        MySqlConnection conn = new MySqlConnection(connStr);
        try
        {
            Console.WriteLine("Connecting to MySQL...");
            conn.Open();

            string sql = "SELECT COUNT(*) FROM Country";
            MySqlCommand cmd = new MySqlCommand(sql, conn);
            object result = cmd.ExecuteScalar();
            if (result != null)
            {
                int r = Convert.ToInt32(result);
                Console.WriteLine("Number of countries in the world database is: " + r);
            }

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }

        conn.Close();
        Console.WriteLine("Done.");
    }
}

此範例使用簡單查詢來計算 Country 表格中的列數。結果會透過在 MySqlCommand 物件上呼叫 ExecuteScalar 來取得。