C#支持多种数据库类型,如SQL Server、MySQL、Oracle等。为了实现一个支持多种数据库的操作类,建议采用面向对象编程的思想,将不同的数据库类型封装成独立的类,并提供一致的接口进行调用。以下是一个示例代码:
public interface IDatabaseHelper
{
bool OpenConnection(string connectionString);
void CloseConnection();
DataSet ExecuteQuery(string query);
int ExecuteNonQuery(string query);
}
public class SqlServerHelper : IDatabaseHelper
{
private SqlConnection _connection;
public bool OpenConnection(string connectionString)
{
try
{
_connection = new SqlConnection(connectionString);
_connection.Open();
return true;
}
catch (Exception ex)
{
// 处理异常
return false;
}
}
public void CloseConnection()
{
_connection.Close();
}
public DataSet ExecuteQuery(string query)
{
var dataSet = new DataSet();
try
{
var adapter = new SqlDataAdapter(query, _connection);
adapter.Fill(dataSet);
}
catch (Exception ex)
{
// 处理异常
}
return dataSet;
}
public int ExecuteNonQuery(string query)
{
var cmd = new SqlCommand(query, _connection);
return cmd.ExecuteNonQuery();
}
}
public class MySqlHelper : IDatabaseHelper
{
private MySqlConnection _connection;
public bool OpenConnection(string connectionString)
{
try
{
_connection = new MySqlConnection(connectionString);
_connection.Open();
return true;
}
catch (Exception ex)
{
// 处理异常
return false;
}
}
public void CloseConnection()
{
_connection.Close();
}
public DataSet ExecuteQuery(string query)
{
var dataSet = new DataSet();
try
{
var adapter = new MySqlDataAdapter(query, _connection);
adapter.Fill(dataSet);
}
catch (Exception ex)
{
// 处理异常
}
return dataSet;
}
public int ExecuteNonQuery(string query)
{
var cmd = new MySqlCommand(query, _connection);
return cmd.ExecuteNonQuery();
}
}
以上代码中,定义了一个 IDatabaseHelper 接口,包含打开数据库连接、关闭数据库连接、执行查询等操作。然后,分别实现了 SqlServerHelper 和 MySqlHelper 类,用于支持SQL Server和MySQL的操作。
在具体使用时,可以根据需要选择相应的数据库类型,并将其实例化为IDatabaseHelper接口,以便在程序中调用通用的方法
class Program
{
static void Main(string[] args)
{
var connectionString = "server=.;database=mydb;uid=myuser;pwd=mypwd;";
// 使用 SQL Server 数据库
IDatabaseHelper helper = new SqlServerHelper();
helper.OpenConnection(connectionString);
var dataTable = helper.ExecuteQuery("SELECT * FROM MyTable");
helper.CloseConnection();
// 使用 MySQL 数据库
helper = new MySqlHelper();
helper.OpenConnection(connectionString);
dataTable = helper.ExecuteQuery("SELECT * FROM MyTable");
helper.CloseConnection();
}
}