使用 SQL Server Express 和 SQL Server CE

Posted

技术标签:

【中文标题】使用 SQL Server Express 和 SQL Server CE【英文标题】:Using SQL Server Express and SQL Server CE 【发布时间】:2013-01-03 04:34:15 【问题描述】:

我正在编写一个应用程序,希望用户选择 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

这行得通,似乎应该有更好的方法。

【问题讨论】:

【参考方案1】:

SqlConnection 和 SqlCEConnection 都扩展了 System.Data.Common.DbConnection,因此将“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.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

【讨论】:

以上是关于使用 SQL Server Express 和 SQL Server CE的主要内容,如果未能解决你的问题,请参考以下文章

我们可以为 SQL Server 和 SQL Server Express 提供通用的连接字符串吗?

您如何使用 SQL Server CE 和 SQL Server 2008 Express?

我们如何使用 Mycrosoft Sync Framework 2.0 推迟将 SQL Express DB 作为客户端和 SQL Server 作为服务器的冲突解决

使用 SQL Server Express 和 SQL Server CE

如何在我添加到项目中的 SQL Server Express 数据库中创建用户?

win10 下安装SQL server 2008R2 express