在与 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
来获得结果。