與 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
來取得。