Выбор строки подключения в приложении VB.NET при запуске - PullRequest
3 голосов
/ 27 апреля 2010

У меня есть приложение VB.NET с подключением к SQL Server 2003. На сервере есть две базы данных, MyDatabase и MyDatabase_Test. Что я хотел бы сделать, так это показать диалоговое окно при запуске программы, которое позволит пользователю выбрать, какую базу данных использовать. Моя идея состоит в том, чтобы создать новую форму в качестве формы запуска, которая устанавливает это свойство, а затем запускает основную форму.

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

РЕДАКТИРОВАТЬ: В файле dataset.xsd, кажется, есть соответствующая часть

<Connections>
          <Connection AppSettingsObjectName="MySettings" AppSettingsPropertyName="MyDatabase_ConnectionString" ConnectionStringObject="" IsAppSettingsProperty="true" Modifier="Assembly" Name="MyDatabase_ConnectionString(MySettings)" ParameterPrefix="@" PropertyReference="ApplicationSettings.MyProgram.My.MySettings.GlobalReference.Default.MyDatabase_ConnectionString" Provider="System.Data.SqlClient" />
</Connections>

Но как мне изменить это во время выполнения? Самое близкое, что я могу найти, - это изменить, какое соединение используется для каждого TableAdapter, но это не кажется оптимальным.

РЕДАКТИРОВАТЬ 2: Я согласен, что модальное диалоговое окно при запуске было бы лучше, но где бы я запустил его, чтобы это было сделано до инициализации подключения к базе данных?

EDIT3: В конце концов я «решил» это, удалив ReadOnly из файла настроек. Это будет удаляться каждый раз, когда файл автоматически генерируется, так что это не оптимально.

РЕДАКТИРОВАТЬ4: Лучшее решение, по-видимому, - использовать строку в пользовательской области вместо строки подключения для связывания набора данных и получения значения для этой строки из двух подключенных строк приложения в области приложения.

Ответы [ 3 ]

1 голос
/ 27 апреля 2010

Вы можете просто установить свойство TableAdapter.Connection.ConnectionString прямо перед тем, как использовать его каждый раз. Найдите раздел в вашем app.config, который определяет строки подключения, и добавьте еще один:

<connectionStrings>
      <add name="Live"
        connectionString="Data Source=svr;Initial Catalog=Live;..."
        providerName="System.Data.SqlClient" />
        <add name="Dev"
        connectionString="Data Source=svr;Initial Catalog=Dev;..."
        providerName="System.Data.SqlClient" />
   </connectionStrings>

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

1 голос
/ 11 мая 2010

После еще одного рассмотрения взлом файла настроек для удаления свойства ReadOnly кажется лучшим решением.

Невозможно определить ConnectionString в пользовательской области, только в области приложения. Можно использовать строку вместо ConnectionString, программа будет работать нормально, но это вызывает много проблем IDE и исключений Visual Studio при автоматической компиляции.

0 голосов
/ 27 апреля 2010

Я не понимаю вопроса, или, скорее, я не вижу вопросов.
У вас есть какие-то конкретные проблемы с этим или просто интересно, если это хороший дизайн?

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

...