C# 使用SQLServerExpress和SQLServerCE
我正在编写一个应用程序,希望用户选择SQL Server CE或SQL Server Express数据库作为背景。然而,它们使用单独的引用和单独的方法 是否有合适的.NET方法来执行此操作,或者我是否存储用户首选项并在整个程序中使用if-then语句来检查数据库类型,例如:C# 使用SQLServerExpress和SQLServerCE,c#,.net,sql-server-ce,sql-server-express,C#,.net,Sql Server Ce,Sql Server Express,我正在编写一个应用程序,希望用户选择SQL Server CE或SQL Server Express数据库作为背景。然而,它们使用单独的引用和单独的方法 是否有合适的.NET方法来执行此操作,或者我是否存储用户首选项并在整个程序中使用if-then语句来检查数据库类型,例如: if (Properties.Settings.Default.dbType == 1) { SqlConnection blah = new SqlConnection} else if (Properties.Sett
if (Properties.Settings.Default.dbType == 1)
{ SqlConnection blah = new SqlConnection}
else if (Properties.Settings.Default.dbType == 2)
{ SqlCEConnection blah = new SqlCEConnection}
这是可行的,似乎应该有更好的办法 SqlConnection和SqlCEConnection都扩展了System.Data.Common.DbConnection,因此将“blah”声明为DbConnection,您将能够使用相同的方法和属性 要实际创建正确的连接类型,请使用System.Data.Common.DbProviderFactorys和System.Data.Common.DbProviderFactory类。例如:
DbProviderFactory providerFactory = DbProviderFactories.GetFactory("The Provider Name");
using (DbConnection connection = providerFactory.CreateConnection())
{
connection.ConnectionString = "The Connection String";
connection.Open();
// Use the "connection" object here
}
对于“提供者名称”,您可以根据数据库类型输入“System.Data.SqlClient”或“System.Data.SqlServerCe”。然后,对于“连接字符串”,您将为提供程序类型输入正确的连接字符串
编辑:此技术适用于App.config文件和System.Configuration.ConfigurationManager类。例如,如果您的App.config文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="TheConnectionString" providerName="System.Data.SqlClient" connectionString="Blah Blah Blah" />
</connectionStrings>
</configuration>
DbProviderFactory providerFactory = DbProviderFactories.GetFactory(ConfigurationManager.ConnectionStrings["TheConnectionString"].ProviderName);
using (DbConnection connection = providerFactory.CreateConnection())
{
connection.ConnectionString = ConfigurationManager.ConnectionStrings["TheConnectionString"].ConnectionString;
connection.Open();
// Use the "connection" object here
}