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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как изменить connectionstring в settings? C# VS2008  
V
    Опции темы
Drabuna
  Дата 10.4.2008, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дивелоперчег
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 27.3.2008
Где: Киев

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



С помощью визарда сделал подключение к SQL Server. В settings.settings сгенерировалась строка подключения. Мне надо менять эту строку во время выполнения программы, допустим чтобы к базе коннектились разные пользователи. Возможно ли это сделать и как?

Прочитал аналогичные темы, но решения так и не нашел.

Заранее спасибо за помощь.
PM MAIL   Вверх
Cristoff
  Дата 10.4.2008, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Аналогичная проблема и у меня. 

Программа должна использовать параметры введенные вручную использовать для подключения к серверу MS SQL, но мастер уже сгенерировал строку и не дает ее менять, т.к. она только на чтение.

Кто как решал эту проблему?
PM MAIL   Вверх
Drabuna
Дата 10.4.2008, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дивелоперчег
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 27.3.2008
Где: Киев

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



Проблема решена всем спасибо)))

Поменял так

Код

Properties.Settings.Default["Имя_строки"] = "Строка подключения";


Это сообщение отредактировал(а) Drabuna - 10.4.2008, 22:37
PM MAIL   Вверх
jonie
Дата 10.4.2008, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



можно поменять у адаптера в рантайме...
Код

this.myTableAdapter.Connection.ConnectionString = "блаблабла";


неудобно, подумал я...и, наверно был прав...
посему придумал сделать вот такое:
Код

namespace WindowsApplication14.Properties
{
    partial class Settings 
    {
        public void SettingsConf(string conStr)
        {
            this["tempConnectionString"] = conStr;
        }
    }
}
....
//где-то в коде
Properties.Settings.Default.SettingsConf("my connection string");

это возможно т.к. класс Settings объявлен как partial
вызываем 1 раз перед использованием каких-либо соединений и все заработает... наверно..
и не надо ставить руками для каждого адаптера в приложении...


хы.. а Drabuna тож прав) долго писал я...
хотя мне больше нравится не размазывать лоику по всему приложению ) так хоть отследить где ставится этот конекшен стринг можно...

Это сообщение отредактировал(а) jonie - 10.4.2008, 23:01


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
IApple
Дата 11.4.2008, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я "плюнул" на строку, которая прописана в сеттингсах (она хороша для отладки, но не для конечного продукта).
Я решил хранить свои настройки по-другому или менять их. Для этого определил 
на глобальном для програмы уровне static переменные в Program.cs:

Код

        static public SqlConnection Conn;   // конект раздавать всем датасетам после создания
        static public SqlConnectionStringBuilder SCSB; // в него можно запихнуть строку из Settings
                                                               // потом изменить какие-то параметры и использовать результат его 

        [STAThread]
        static void Main()
        {
            string Login = "";
            string PSW = "";
            
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            try
            {
                // встановити мову інтерфейса
                Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(Config.Instance.MyLang);
                IPY_Util.MyCulture = Thread.CurrentThread.CurrentUICulture;

                // начальный вариант строки подключення (вы можете его взять из Settings)
                SCSB = new SqlConnectionStringBuilder(Config.Instance.ConnStr);
                // спросить логин-пароль
                DialogResult R = IPY_WCL.zPswBox.GetPassword(ref Login, ref PSW);
                if (R == DialogResult.OK)
                {
                    SCSB.UserID = Login;
                    SCSB.Password = PSW;
                    // в этом месте можно пометять и другие параметры подключения...
                    // после чего SCSB.ConnectionString вернет правильно скомпонованую строку учитывая и их...
                    Conn = new SqlConnection(SCSB.ConnectionString);

                    Conn.Open();       // пробуем конект
                    Conn.Close();

                    // теперь можно создавать главную форму
                    MainForm MF = new MainForm();
                    Application.Run(MF);
                }
            }
            catch (Exception e)
            {
                // какась ашипка при входе (может плохой пароль-логин к примеру)
            }
       }


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


        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
        private void InitConnection() {
            this._connection = new System.Data.SqlClient.SqlConnection();
            this._connection.ConnectionString = global::XXX.Properties.Settings.Default.XXXConnectionString;
        }


Поэтому после создания нужно сразу после его создания создать ему новое Connection:

Код

  xxxTableAdapter = new xxxTableAdapter();
  xxxTableAdapter.Connection = new System.Data.SqlClient.SqlConnection(Program.SCSB.ConnectionString);


PM MAIL   Вверх
Ald
Дата 31.7.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте, я недавно начал изучать C# и ADO.NET, использую Visual C# 2008 Express edition . Насколько я понял соединение к БД можно хранить разными способами.
Один из них в config файле: 
Код

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="ConsoleApplication1.Properties.Settings.NORTHWNDConnectionString"
            connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\NORTHWND.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

Как можно в коде программы обращаться к ConnectionString? 
 Я имею ввиду работу с переменной так, если бы я ее объявлял в коде.
Код

string sqlConnectString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=c:\NORTHWND.mdf;" +
                   "Integrated security=SSPI;";
            using (SqlConnection connection = new SqlConnection(sqlConnectString))
            {
                connection.Open(  );
  }


PM MAIL   Вверх
PashaPash
Дата 31.7.2008, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

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



Ald, ConsoleApplication1.Properties.Settings.Default.NORTHWNDConnectionString


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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