我有一个使用SQL Server作为数据库的应用程序(WinForms)。
现在我使用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
。
这里==&gt; abc-79f1f531c9f
是在我的(开发人员)PC上运行的服务器名称。
现在,当客户端站点上安装了应用程序时,应将服务器名称更改为客户端计算机上运行的服务器名称或客户端计算机使用的服务器名称。
那么应该是处理这种情况的最佳标准呢?
意味着我必须创建一个新表单,要求用户输入他们的Server Name
并根据我创建的ConnectionString?
或动态获取servername
?
或者只是在Server Name
文件中硬编码客户端计算机的App.config
(或客户端计算机使用的服务器名称)?
请帮助.....
答案 0 :(得分:2)
您可能希望提供一个用户可以输入服务器名称的位置,或者如果您很聪明,请提供网络上可用服务器的列表(例如,使用@ 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
的位置。
答案 1 :(得分:2)
由于您可以以编程方式读取app.config中定义的连接字符串列表,因此建议您创建连接字符串列表并询问用户使用哪一个:
foreach(ConnectionStringSettings setting in ConfigurationManager.ConnectionStrings)
{
...
}
最好不要询问服务器名称,因为你可以为connectionstring条目提供一个好名字。
答案 2 :(得分:1)
答案 3 :(得分:0)
<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
文件中添加此代码,然后将数据库附加到安装文件即可。
它会自动从项目的安装文件中获取数据库。