我有一个应用程序(WinForms(,它使用SQL Server作为数据库。
现在我正在使用app.config
文件来访问ConnectionString
。
看看我的app.config
文件
<configuration>
<connectionStrings>
<add name="dbConnectionString"
connectionString="Data Source=abc-79f1f531c9f;Initial Catalog=ItemStockInParth;Integrated Security=True;Pooling=False"
providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
你可以看到Data Source=abc-79f1f531c9f
。
这里===>abc-79f1f531c9f
是在我(开发人员(的电脑上运行的服务器名称。
现在,当应用程序安装在客户端的站点上时,服务器名称应该更改为在客户端计算机上运行的服务器名称或客户端计算机将使用的服务器名称。
那么,处理这种情况的最佳标准应该是什么?
意味着我必须创建一个新表单,要求用户输入他们的Server Name
,然后我创建我们的ConnectionString?
还是动态获取servername
?
或者只是在我们的App.config
文件中硬编码客户端机器的Server Name
(或客户端机器将使用的服务器名称(?
请帮忙。。。。。
您可能希望提供一个用户可以输入服务器名称的地方,或者如果您很聪明,可以提供网络上可用服务器的列表(例如使用@user350374引用的代码(。然后,您可以根据需要使用SqlConnectionStringBuilder类生成适当的连接字符串:
var builder = new SqlConnectionStringBuilder();
builder.DataSource = ##SERVER NAME FROM USER##
builder.InitialCatalog = "ItemStockInParth";
builder.IntegratedSecurity = true;
builder.Pooling = false;
string connectionString = builder.ConnectionString;
using (SqlConnection con = new SqlConnection(connectionString))
{
con.Open();
// use the connection here for your code
con.Close();
}
这将取代从您的配置类请求连接字符串的位置,即您通常说ConfigurationManager.ConnectionStrings['dbConnectionString'].ConnectionString
的位置。
由于您可以通过编程读取app.config中定义的连接字符串列表,我建议您创建一个连接字符串列表并询问用户要使用哪一个:
foreach(ConnectionStringSettings setting in ConfigurationManager.ConnectionStrings)
{
...
}
这比询问服务器名称要好,因为您可以为连接字符串条目提供一个漂亮的名称。
这就是您想要的吗http://krishnapyrmca.wordpress.com/2010/11/23/get-sql-server-name-using-c/
<add key="Connectionstring" value="Data Source=.;
AttachDbFilename=|DataDirectory|AppData.mdf;
Initial Catalog=Appdata;Integrated Security=True"/>
<add key="Connectionstring" value="Data Source=.;
AttachDbFilename=|DataDirectory|AppData.mdf;
Initial Catalog=Appdata;Integrated Security=True"/>
只需将此代码添加到app.config
文件中,然后将数据库附加到设置文件中。它会自动从项目的设置文件中获取数据库。