与 MySQL 数据库建立连接后,下一步可以执行数据库操作。这个任务可以通过使用
MySqlCommand
对象来实现。
创建后,您可以调用三个主要的方法:
ExecuteReader
查询数据库。结果通常在一个MySqlDataReader
对象中返回,该对象由ExecuteReader
.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
对象包含在该对象上执行的 SQL 生成的结果
MySqlCommand
。当在MySqlReader
对象中获得结果时,可以处理结果。while
在这种情况下,信息是通过循环打印出来的。最后,
MySqlReader
通过调用该Close
方法来处理该对象。
下一个示例显示如何使用该
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
创建对象并ExecuteNonQuery
调用MySqlCommand
对象上的方法。您可以使用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
表中的行数。通过调用对象获得ExecuteScalar
结果
MySqlCommand
。