Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Строка подключения 
:(
    Опции темы
Real
Дата 29.3.2008, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 507
Регистрация: 9.11.2007

Репутация: нет
Всего: -1



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

Добавлено через 2 минуты и 14 секунд
Если очень много FORM, то как сделать вседоступность?
PM   Вверх
thomas
Дата 29.3.2008, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



Real, 
Приветствую.
Во всех классах, во всех методах и функциях этих классов прописать стоку подключения. Тогда она будет всегда и везде доступна.  smile 

ЗЫ а если серьезно, то сколько раз тебя просить, задавай вопросы по-человечески.
Что ты подразумеваешь под этим
Цитата

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

Обьясни, что ты хочешь делать со своей строкой подключения???
Что ты понимешь под вседоступностью???

В зависимости от того что тебе надо конкретно, будут и различные варианты решения: от публичного класса с одним полем только для чтения, до использования settings проекта.


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Real
Дата 29.3.2008, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 507
Регистрация: 9.11.2007

Репутация: нет
Всего: -1



2thomas Чтоб можна было из разных FORM иметь доступ до строки подключения на чтение, чтоб при открытии формы чтоб было событие подключение к базы данных?
PM   Вверх
thomas
Дата 29.3.2008, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



Real, 
тогда используй класс
Код

using System;
using System.Collections.Generic;
using System.Text;

namespace BusinessLayer
{
    public class Common
    {
        public static readonly string connectionString = @"Data Source=(local)\SQLEXPRESS;Initial Catalog=VKL;integrated security=true;";
    }
}

в Data Source подставляй имя своего сервера, а в Initial Catalog имя своей БД.
Там где надо вызываешь это дело так
Код

SqlConnection con = new SqlConnection(Common.connectionString);

ну и далее по тексту.

Успехов.


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
MissVictoriya
Дата 29.3.2008, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.3.2008

Репутация: нет
Всего: нет



А может, кто знает, как подключить БД PostgreSQL?
PM MAIL   Вверх
Bruins777
Дата 30.10.2008, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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(); 
           Метод который возвращает готовую строку подключения
        }
Просьба написать предложения и замечания может есть более простой способ бороться с универсальными строками подключения пишите буду рад!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0505 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.