![]() |
|
Модераторы: gambit |
![]()
|
|
| Real |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 507 Регистрация: 9.11.2007 Репутация: нет Всего: -1 |
Как сделать строку подключения вседоступной с разных мест программы?
Добавлено через 2 минуты и 14 секунд Если очень много FORM, то как сделать вседоступность? |
|||
|
||||
| thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
Real,
Приветствую. Во всех классах, во всех методах и функциях этих классов прописать стоку подключения. Тогда она будет всегда и везде доступна. ЗЫ а если серьезно, то сколько раз тебя просить, задавай вопросы по-человечески. Что ты подразумеваешь под этим
Обьясни, что ты хочешь делать со своей строкой подключения??? Что ты понимешь под вседоступностью??? В зависимости от того что тебе надо конкретно, будут и различные варианты решения: от публичного класса с одним полем только для чтения, до использования settings проекта. -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
| Real |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 507 Регистрация: 9.11.2007 Репутация: нет Всего: -1 |
2thomas Чтоб можна было из разных FORM иметь доступ до строки подключения на чтение, чтоб при открытии формы чтоб было событие подключение к базы данных?
|
|||
|
||||
| thomas |
|
||||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
Real,
тогда используй класс
в Data Source подставляй имя своего сервера, а в Initial Catalog имя своей БД. Там где надо вызываешь это дело так
ну и далее по тексту. Успехов. -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
||||
|
|||||
| MissVictoriya |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 29.3.2008 Репутация: нет Всего: нет |
А может, кто знает, как подключить БД PostgreSQL?
|
|||
|
||||
| Bruins777 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 30.10.2008 Репутация: нет Всего: нет |
На мой взгляд строки подключения необходимо хранить в app.config естестевенно в зашифрованном виде.
Выкладываю код как генерировать строку подключения и записывать в config (в зашифрованном виде) сам проверял все у меня работает 1) Способ генерации строки подключения через SMO (потом через методы класса передается на форму например в комбобокс для списка подключенных серверов и входящих в них БД. using System; using System.Collections.Generic; using System.Data; using Microsoft.SqlServer.Management.Smo; using Microsoft.SqlServer.Management.Common; namespace LookServer { //создаем класс для работы с имеющимися серверами баз данных public static class ConnectServers { private static List<string> arServ = new List<string>(); //возвращает все серверы находящиеся в сети public static object[] ReturnAllServers() { //Создаем таблицу из всех подключенных серверов в том числе //и сетевых DataTable tablesHasServers = SmoApplication.EnumAvailableSqlServers(false); //Очищаем List arServ.Clear(); //Заполняем массив List найдеными серверами foreach (DataRow dr in tablesHasServers.Rows) { arServ.Add(dr["Name"].ToString()); } return Obj(arServ); } public static object[] ReturnAllDatabases(string serversName, string password, string user) { //Создаем строку подключения выбранного сервера ServerConnection servConn = new ServerConnection(serversName, user, password); //Передаем ссылку на текущий выбранный сервер Server server = new Server(servConn); //Создаем перечень баз данных для выбранного сервера DatabaseCollection databaseCollect = server.Databases; //Очищаем List arServ.Clear(); foreach (Database db in databaseCollect) arServ.Add(db.Name); return Obj(arServ); } private static object[] Obj(List<string> list) { object[] objMass = new object[list.Count]; for (int i = 0; i < list.Count; i++) { objMass[i] = list[i]; } return objMass; } } } Второй способ через propertyGrid private void FormAdvanced_Load(object sender, EventArgs e) { SqlConnectionStringBuilder strBuild = new SqlConnectionStringBuilder(); propertyGridMain.SelectedObject = strBuild; label1.Text = ""; // Отражается генерируемая строка подключения //Потом передается для проверки в SqlConnectionStringBuilder } private void propertyGridMain_PropertyValueChanged(object s, PropertyValueChangedEventArgs e) { if (e.ChangedItem.GridItems != null) { label1.Text += e.ChangedItem.Label.Trim() + "=" + e.ChangedItem.Value.ToString() + ";" ; } } Завершающий шаг это сохранения в файле app.config строки подключения и шифровка его private void okButton_Click(object sender, EventArgs e) { //Создаем строку подключения в xml file System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration( System.Configuration.ConfigurationUserLevel.None); //шифруем содержание строки подключения по умолчанию RSA config.ConnectionStrings.SectionInformation.ProtectSection(null); //Записываем xml file config.ConnectionStrings.ConnectionStrings.Add( new System.Configuration.ConnectionStringSettings("SQLConnect", ConnectStringBuilder())); config.Save(); ConnectDatabaseForm frm = this; frm.Close(); Метод который возвращает готовую строку подключения } Просьба написать предложения и замечания может есть более простой способ бороться с универсальными строками подключения пишите буду рад! |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |