Using SQL Server Express and SQL Server CE

本文关键字:SQL Server CE and Express Using | 更新日期: 2023-09-27 17:50:34

我正在编写一个应用程序,我希望用户选择SQL Server CE或SQL Server Express数据库作为后台。然而,它们使用单独的引用和单独的方法。

是否有一个合适的。net方法来做这件事,或者我是否存储一个用户首选项并在整个程序中使用if then语句来检查数据库类型,例如:

if (Properties.Settings.Default.dbType == 1)
{ SqlConnection blah = new SqlConnection}
else if (Properties.Settings.Default.dbType == 2)
{ SqlCEConnection blah = new SqlCEConnection}

这是有效的,似乎应该有一个更好的方法。

Using SQL Server Express and SQL Server CE

SqlConnection和sqlcecconnection都扩展了System.Data.Common。因此,将"blah"声明为DbConnection,您将能够使用相同的方法和属性。

要实际创建正确的连接类型,请使用System.Data.Common.DbProviderFactories和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. Name"。SqlClient"或"System.Data. SqlClient"。SqlServerCe",取决于数据库类型。然后,对于"连接字符串",您将为提供程序类型输入正确的连接字符串。

EDIT:此技术适用于您的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
}