Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Диалог подключения к БД


Автор: DenwerD 20.1.2009, 15:13
Доброго времени суток.

Кто нибудь знает как можно програмно вызвать диалог для установления соединения с СУБД, как в VS 2005 Tool->Connect to Database

Автор: PaZ1T1V 20.1.2009, 18:43
если я правильно понял, то: 

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

Код

 OleDbConnection conn = new OleDbConnection("provider=microsoft.jet.oledb.4.0;" + @"data source=(имя БД без скобок естесственно)");
 

и не забываем подключить класс

Код

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;//работа с Access Db
using System.Windows.Forms;



Автор: DenwerD 20.1.2009, 21:45
Со свойством ConnectionString все понятно: как его делать и для чего оно нужно. Мне интересно есть ли класс для вызова формы (диалога) (например как то так DdConnectionDialog) который выглядит как в VS 2005  пункт меню Tool->Connect to Database . Ну например есть же классы диалогов: OpenFileDialog и т.д. 

Копание MSDN не помогло. Может конечно "Лопата" хреновая, но все же.

А то не хочется написать нечто подобное а потом узнать что есть стандартные средств.

Автор: Drabuna 20.1.2009, 22:49
Мммм может как кем то написанный контрол он и есть. Стандартного насколько я знаю, нету.
Да и самому написать нечто подобное не так и сложно)

Автор: DenwerD 21.1.2009, 08:46
Цитата(Drabuna @ 20.1.2009,  22:49)
Мммм может как кем то написанный контрол он и есть. Стандартного насколько я знаю, нету.
Да и самому написать нечто подобное не так и сложно)

Согласен, что несложно. Чем и займусь.

Автор: Veitmen 21.1.2009, 12:22
Код

static class ConnectionStringBuilder
    {
        public static string BuildConnectionStringDlg(Form parent)
        {
            MSDASC.DataLinksClass dlc =
                new MSDASC.DataLinksClass();
            if(parent!=null)
                dlc.hWnd = parent.Handle.ToInt32();
            ADODB._Connection result =
                (ADODB._Connection)dlc.PromptNew();
            if (result != null)
            {
                return result.ConnectionString.ToString();
            }
            return "";
        }
    }


нужны референсы на СОМ: "Microsoft ActiveX Data Objects 2.8 Library" и "Microsoft OLE DB Service Component 1.0 Type Library"

Добавлено через 43 секунды
Это где то было на форуме...

Автор: Drabuna 21.1.2009, 13:28
Хм... спасибо, не знал)

Автор: DenwerD 21.1.2009, 17:05
Спасибо, попробуем заюзать.  

Стесняюсь спросить: Microsoft ActiveX Data Objects 2.8 Library" и Microsoft OLE DB Service Component 1.0 Type Library" - это Net библиотеки ( входят в состав Framework -а ) ?

Если нет, то как думаете, каая вероятность их отсутствия на клиентской машине? Мне кажется что она стремится к нулю, но все же хотелось услышать Ваше мнения

Автор: Drabuna 21.1.2009, 17:23
Когда вы скомпилируете свою программу, эти библиотеки будут находится в папке debug или release, вместе с еxe файлом.

Автор: DenwerD 21.1.2009, 21:13
Цитата(Drabuna @  21.1.2009,  17:23 Найти цитируемый пост)
Спасибо большое. 


Автор: Любитель 25.1.2009, 17:11
Предложенным образом мы получим коннекшен стринг для классического ADO (в .Net есть, конечно врапперы для классического ADO - в Syste,.Data.OleDb). "Студийный" диалог коннекта к базе используетс студийные чистодотнетовские (некомовские) сборки (как минимум Microsoft.Data.Connection.UI.dll, Microsoft.Data.Connection.UI.Dialog.dll). По идее сборки эти можно юзать свободно - так как они, если я не ошибаюсь, входят в VS SDK. Документацию по ним можно найти в том же SDK (ну или онлайн МСДН, само собой).

ЗЫ Насчёт лицензии точно не уверен - это, конечно, надо читать.

Автор: emmanuil 1.2.2009, 16:38
Я делал свой диалог, свой всегда лучше, о нем все знаешь. smile
Использовал System.Data.Sql.SqlDataSourceEnumerator.Instance.GetDataSources() - возвращает сервера. А для получения баз данных использовал System.Data.SqlClient.SqlConnection.GetSchema() с параметрами. См. в msdn.

Автор: DesantRu 1.2.2009, 22:04
OleDbConnection conn = new OleDbConnection("provider=microsoft.jet.oledb.4.0;" + @"data source=(имя БД без скобок естесственно)");

 
Извините за вопрос - а что означает знак @ в этом выражении?
Часто встречаю этот знак и не могу понять что он означает...

Автор: Ronin08 2.2.2009, 10:01
Цитата

Извините за вопрос - а что означает знак @ в этом выражении?

@"c:\Docs\Source\a.txt"  тоже самое что "c:\\Docs\\Source\\a.txt", т.е. удваивает символ "\"

Автор: DesantRu 2.2.2009, 20:38
Спасибо большое! Все понятно.

Автор: emmanuil 3.2.2009, 06:22
Цитата(Ronin08 @  2.2.2009,  08:01 Найти цитируемый пост)
@"c:\Docs\Source\a.txt"  тоже самое что "c:\\Docs\\Source\\a.txt", т.е. удваивает символ "\"

Немного поправлю. @ не просто удваивает \, а указывает на то, что строку нужно воспринимать в ее естественном виде, т.е. только символы. Без этого символа в строке можно задавать команды, например \n - новая строка. Вот два варианта:
Код

string s = @"dadasdasds\nadadasd";
Console.WriteLine(s);
s = "dadasdasds\nadadasd";
Console.WriteLine(s);
в первом будет простая строка, а во втором, символы после \n перенесутся на новую строку.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)