在WPF中存储多个SQL Server数据库的连接字符串信息

时间:2012-12-17 07:49:29

标签: wpf wpf-4.0

我首先使用Entity Framework代码备份了一个wpf应用程序。该应用程序允许用户使用wpf屏幕创建新数据库并使用它们进行处理。在Entity Framework代码中创建新数据库非常简单,不是问题。但是,我正在努力寻找一种合适的方式将特定的wpf客户端与他正在处理的当前数据库相关联。数据库连接字符串的构造如下所示。

providerConnectionString = "Server=" + serverName + ";" + "Database=" + databaseName +
            "; User Id = userId; Password = password; Persist Security Info=True;";

如上所示,我必须在客户端计算机上的某处存储服务器,数据库名称,UserId和密码,以便在客户端启动wpf应用程序时可以选择正确的数据库。为了增加一些复杂性,如果用户希望使用wpf应用程序,则可以从一个数据库切换到另一个数据库。在这种情况下,我将重置上述四个连接字符串参数以指向新数据库。

我不会为WPF应用程序提供任何密码保护。上面写的所有内容仅适用于SQL Server数据库连接字符串。

总而言之,在可以从wpf应用程序动态添加新数据库的情况下,为特定wpf客户端存储sql server连接字符串信息的最佳方法是什么。

1 个答案:

答案 0 :(得分:0)

如何在代码中存储默认连接,然后允许用户更改WPF应用程序中的连接详细信息,然后将其存储在独立存储中。因此,连接将是每个WPF客户端用户。或者,如果您必须在第一个实例中设置它 - 检查登录用户,然后查找数据库连接信息,然后将其存储在隔离存储中,以便从代码中进行任何后续访问。

例如向此对象添加键值对

IsolatedStorageFile isolatedStorage = IsolatedStorageFile.GetUserStoreForAssembly();


Dictionary<string,string> dict = new Dictionary<string,string>();

添加到您的词典...

IsolatedStorageFile isoStore = 
          IsolatedStorageFile.GetStore( IsolatedStorageScope.User 
          | IsolatedStorageScope.Assembly, null, null );
        Stream stream = new 
          IsolatedStorageFileStream(someFileName, 
          FileMode.Create, isoStore );

        if ( stream != null )
        {
            try
            {
                // Serialize the object into the IsolatedStorage.
                IFormatter formatter = new BinaryFormatter();
                formatter.Serialize( stream, (Dictionary)dict);
            }
            finally
            {
                stream.Close();
            }
        }