ConnectionString для подключения к базе данных SQL Server? - PullRequest
1 голос
/ 10 августа 2011

У меня есть приложение (WinForms), которое использует SQL Server в качестве своей базы данных.

Теперь я использую app.config файл для доступа к ConnectionString.

Посмотрите на мой app.config file

<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?

Или просто зашифруйте Server Name клиентского компьютера (или имя сервера, которое будет использовать клиентский компьютер) внутри нашего App.config файла?

, пожалуйста, помогите .....

Ответы [ 4 ]

2 голосов
/ 10 августа 2011

Возможно, вы захотите указать место, где пользователь может ввести имя сервера, или, если вы сообразительны, предоставить список доступных серверов в сети (например, с помощью кода, на который ссылается @ user350374).Затем вы можете сгенерировать подходящую строку подключения, как вам нужно, используя SqlConnectionStringBuilder class:

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.

2 голосов
/ 10 августа 2011

Поскольку вы можете программно читать список строк подключения, определенных в app.config, я предлагаю вам создать список строк подключения и спросить пользователя, какую из них использовать:

foreach(ConnectionStringSettings setting in ConfigurationManager.ConnectionStrings)
{
  ...
}

Это лучше, чем запрашивать имя сервера, так как вы можете дать хорошее имя записи строки соединения.

1 голос
/ 10 августа 2011
0 голосов
/ 03 декабря 2011
<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 и присоедините вашу базу данных к файлу установки.Он автоматически берет базу данных из установочного файла вашего проекта.

...