| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Базы данных под .NET > Строка подключения |
| Автор: Real 29.3.2008, 10:48 |
| Как сделать строку подключения вседоступной с разных мест программы? Добавлено через 2 минуты и 14 секунд Если очень много FORM, то как сделать вседоступность? |
| Автор: thomas 29.3.2008, 10:58 | ||
| Real, Приветствую. Во всех классах, во всех методах и функциях этих классов прописать стоку подключения. Тогда она будет всегда и везде доступна. ЗЫ а если серьезно, то сколько раз тебя просить, задавай вопросы по-человечески. Что ты подразумеваешь под этим
Обьясни, что ты хочешь делать со своей строкой подключения??? Что ты понимешь под вседоступностью??? В зависимости от того что тебе надо конкретно, будут и различные варианты решения: от публичного класса с одним полем только для чтения, до использования settings проекта. |
| Автор: Real 29.3.2008, 11:05 |
| 2thomas Чтоб можна было из разных FORM иметь доступ до строки подключения на чтение, чтоб при открытии формы чтоб было событие подключение к базы данных? |
| Автор: thomas 29.3.2008, 11:42 | ||||
| Real, тогда используй класс
в Data Source подставляй имя своего сервера, а в Initial Catalog имя своей БД. Там где надо вызываешь это дело так
ну и далее по тексту. Успехов. |
| Автор: MissVictoriya 29.3.2008, 19:49 |
| А может, кто знает, как подключить БД PostgreSQL? |
| Автор: Bruins777 30.10.2008, 18:09 |
| На мой взгляд строки подключения необходимо хранить в 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(); Метод который возвращает готовую строку подключения } Просьба написать предложения и замечания может есть более простой способ бороться с универсальными строками подключения пишите буду рад! |