Извлечение значения строки подключения из текстового поля - PullRequest
0 голосов
/ 10 декабря 2010

В одном классе я определил строку подключения следующим образом

  SqlConnectionStringBuilder objConnectionString = new SqlConnectionStringBuilder();
            objConnectionString.DataSource = localServer; ;
            objConnectionString.UserID = userName;
            objConnectionString.Password = password;
            objConnectionString.InitialCatalog = selectedDatabase;

где локальный сервер = txtHost; - источник данных userName = txtUsername; пароль = txtPassword;

Но в моем другом проекте я хочу получить доступ к элементам управления этого проекта

В настоящее время я связан с БД, как это

  using(var sConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]))

Но я хочу сделать так, чтобы оно получало значение непосредственно из текстовых полей, используемых в другом проекте

Жду ваших предложений ..... Можно ли это сделать ..

Ответы [ 2 ]

0 голосов
/ 10 декабря 2010

В вашей форме с текстовым полем вам нужно будет создать свойства для доступа к значениям из формы, например,

public string Server 
{
   get
   {
      return this.txtHost.Text;
   }
}

Вам также нужно будет передать ссылку на форму в ваш другой проект, либопутем ссылки на проект или использования общего интерфейса между ними.

В вашем проекте, где вы хотите построить строку подключения, вам потребуется какой-то способ получения ссылки на форму, например

public void RunMyQuery(MyForm form)
{
   var objConnectionString = new SqlConnectionStringBuilder();
   objConnectionString.DataSource = form.Server; 
}

Если у вас есть время, подумайте о создании нового проекта, содержащего общие интерфейсы, чтобы вы могли создать такой интерфейс, как

public interface IConnectionStringPartProvider
{
   string Server { get; }
   ... other parts
}

, и реализовать этот интерфейс в своей форме

public partial class Form1 : Form, IConnectionStringPartProvider

Тогда вам не нужно ссылаться на ваш проект формы в вашем классе логики, просто позвольте обоим проектам ссылаться на общий проект.

Таким образом, ваш метод запроса может быть заменен на

public void RunMyQuery(IConnectionStringPartProvider provider)
{
   var objConnectionString = new SqlConnectionStringBuilder();
   objConnectionString.DataSource = provider.Server; 
}
0 голосов
/ 10 декабря 2010

Вы не сможете сделать это, если вы не передадите фактические элементы управления методу в другом проекте.

Почему бы не передать объект SqlConnectionStringBuilder, который вы установили ранее, в методвызывается?

...