About DbProviderFactory
有时间研究了一下.net framework的DbProviderFactory (ADO.NET), namespace:System.Data.Common;
使用
DbProviderFactory factory = DbProviderFactories.GetFactory(providerName);
connection = factory.CreateConnection();
可以很方便的创建不同类型的数据连接
首先在config文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<clear/>
<add name="NorthwindSQL"
providerName="System.Data.SqlClient"
connectionString=
"Data Source=.;Initial Catalog=Northwind;Integrated Security=true"/>
<add name="NorthwindAccess"
providerName="System.Data.OleDb"
connectionString=
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Northwind.mdb;"/>
<add name="NorthwindMySql"
connectionString=
"Server=172.29.131.27;Port=3311;DataBase=comctl;Persist Security Info=False;User ID=root;Password=123456;Allow Zero Datetime=true;"
providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
<appSettings>
<add key="Connection" value="NorthwindMySql"/>
</appSettings>
<system.data>
<DbProviderFactories>
<add name="MySQL Data Provider"
invariant="MySql.Data.MySqlClient"
description=".Net Framework Data Provider for MySQL"
type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=5.2.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
</DbProviderFactories>
</system.data>
</configuration>
如果本地已经安装mysql,则不需要注册此配置信息
CS
public static DataTable GetCategories()
{
DataTable table = new DataTable();
string connName = System.Configuration.ConfigurationManager.AppSettings["Connection"];
string connectionString = ConfigurationManager.ConnectionStrings[connName].ConnectionString;
string providerName = ConfigurationManager.ConnectionStrings[connName].ProviderName;
// Create the DbProviderFactory and DbConnection.
DbProviderFactory factory =
DbProviderFactories.GetFactory(providerName);
DbConnection connection = factory.CreateConnection();
connection.ConnectionString = connectionString;
using (connection)
{
// Define the query.
string queryString =
"SELECT * FROM Categories";
// Create the DbCommand.
DbCommand command = factory.CreateCommand();
command.CommandText = queryString;
command.Connection = connection;
// Create the DbDataAdapter.
DbDataAdapter adapter = factory.CreateDataAdapter();
adapter.SelectCommand = command;
// Fill the DataTable.
adapter.Fill(table);
}
return table;
}
// Retrieve the installed providers and factories.
DataTable table = DbProviderFactories.GetFactoryClasses();
得到本机所有providers
深入理解http://technet.microsoft.com/zh-cn/office/wda6c36e.aspx
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?