powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Не заучивайте строку конекта...
15 сообщений из 15, страница 1 из 1
Не заучивайте строку конекта...
    #32681794
Тень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто создайте файл с расширением UDL. Запустите его, появится визард.
Проделайте в нем нужный конент. Потом откройте этот файл любым текстовым редактором и скопируйте строку конекта.
...
Рейтинг: 0 / 0
Не заучивайте строку конекта...
    #32681857
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более того, в качестве строки подключения для OleDbConnection можно указать"File Name=myfile.udl;"и параметры подключения можно настраивать, не влезая в текст программы
---
PS о чем это мы ? поместить FAQ ?
...
Рейтинг: 0 / 0
Не заучивайте строку конекта...
    #32681918
Тень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только пароль легко считать злоумышленникам.
...
Рейтинг: 0 / 0
Не заучивайте строку конекта...
    #32681978
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда оставляем в программе

Код: plaintext
1.
2.
3.
string user="sa",   // заполняем через диалог 
       pswd="123",  // заполняем через диалог 
       file="config.udl";
connectionString="User Id="+user+";Password="+pswd+";File Name="+file;

или, если допускается Windows авторизация:

Код: plaintext
connectionString="Integrated Security=SSPI;File Name="+file;

и FAQ готов :)
в соавторы возьмешь ?
...
Рейтинг: 0 / 0
Не заучивайте строку конекта...
    #32682344
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и теперь получим строку подключения через диалог "Data Link Properties"
(динамически во время выполнения программы)

добавляем к ссылкам проекта:
Microsoft ActiveX Data Objects 2.8 Library (2.7 тоже сойдет)

Microsoft OLE DB Service Component 1.0 Type Library

Код: plaintext
1.
2.
3.
 // вызов метода, возвращающего строку подключения 
 // изначально установлен, например,  
 // "Microsoft OLE DB Provider for SQL Server" 
string cs=GetConnectionString("Provider=SQLOLEDB;");

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public string GetConnectionString(string str)
{
string  connectionString=string.Empty;  // возвращаемая строка подключения 
ADODB.ConnectionClass cn=new ADODB.ConnectionClass();
MSDASC.DataLinksClass ud=new MSDASC.DataLinksClass();

  cn.ConnectionString=str;   // начальное значение параметров подключения 
  object ob          =cn;

  if(ud.PromptEdit(ref ob))  // показать диалог "Data Link Properties" 
  {  // нажали кнопку ОК: 
    connectionString=cn.ConnectionString; 
  }
   // вернуть строку подключения 
  return(connectionString);			
}

"не заучивайте строку коннекта ..." © тень

---
наверное, этот топик лучше перенести в ADO.NET
...
Рейтинг: 0 / 0
Не заучивайте строку конекта...
    #32682592
Фотография nex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ещё можно вот тут подсмотреть : http://www.connectionstrings.com :)
...
Рейтинг: 0 / 0
Не заучивайте строку конекта...
    #32690566
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все тоже самое, только через Reflection
( ! ничего к к ссылкам проекта добавлять не надо ! )

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
using System.Reflection;
using System.Runtime.InteropServices;


public string GetConnectionString(string str)
{
string connectionString=string.Empty;  // возвращаемая строка подключения 
object cn=null,  // ADODB.Connection 
       ud=null;  // MSDASC.DataLinks 
			
  try
  {
    Type AdoDbConnectionType=Type.GetTypeFromProgID("ADODB.Connection");
    Type MSDascDataLinksType=Type.GetTypeFromCLSID(new Guid("{2206CDB2-19C1-11D1-89E0-00C04FD7A829}"));
     // создать COM объекты ADODB.Connection и MSDASC.DataLinks 
    cn=AdoDbConnectionType.InvokeMember(null, BindingFlags.CreateInstance, null, null, new object[0]);
    ud=MSDascDataLinksType.InvokeMember(null, BindingFlags.CreateInstance, null, null, new object[0]);
			
    AdoDbConnectionType.InvokeMember("ConnectionString", BindingFlags.SetProperty, null, cn, new object[]{str});
    if((bool)(MSDascDataLinksType.InvokeMember("PromptEdit", BindingFlags.InvokeMethod, null, ud, new object[]{cn})))
    {  // нажали кнопку ОК: 
      connectionString=(string)(AdoDbConnectionType.InvokeMember("ConnectionString", BindingFlags.GetProperty, null, cn, new object[0]));
    }
  }
  catch{  /* обработка ошибок */  }
  finally
  { if(cn!=null) Marshal.ReleaseComObject(cn);
    cn=null;
    if(ud!=null) Marshal.ReleaseComObject(ud);
    ud=null;
  }
   // вернуть строку подключения 
  return(connectionString);	
}
...
Рейтинг: 0 / 0
Не заучивайте строку конекта...
    #32690576
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 кузя

Может два твоих последних поста в FAQ ?
http://www.sql.ru/faq/faq_add.aspx?rid=15000

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Не заучивайте строку конекта...
    #32692102
вопрос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как из возвращаемого результата убрать провайдера?
...
Рейтинг: 0 / 0
Не заучивайте строку конекта...
    #32692295
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это для отличных от OleDbConnection ?

можно, например, через разбор строки (поиск "provider=") и удаление всего содержимого до ";" или конца строки.

можно возвращать массив строк, вытаскивая нужные Properties подключения из объекта ADODB.Connection
...
Рейтинг: 0 / 0
Не заучивайте строку конекта...
    #32692805
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
примерно так можно достать поименованные свойства объекта ADODB.Connection

пример для Initial Catalog:

Код: plaintext
1.
2.
3.
4.
5.
string ic=string.Empty;  // Initial Catalog 
object cp=AdoDbConnectionType.InvokeMember("Properties", BindingFlags.GetProperty, null, cn, new object[]{"Initial Catalog"});
if(cp!=null)
{ ic=(string)cp.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, cp, new object[0]);
  Marshal.ReleaseComObject(cp);
}
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Не заучивайте строку конекта...
    #36657421
AnarkiSib
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кузя,

А как этот код:

// вызов метода, возвращающего строку подключения
// изначально установлен, например,
// "Microsoft OLE DB Provider for SQL Server"
string cs=GetConnectionString("Provider=SQLOLEDB;");


public string GetConnectionString(string str)
{
string connectionString=string.Empty; // возвращаемая строка подключения
ADODB.ConnectionClass cn=new ADODB.ConnectionClass();
MSDASC.DataLinksClass ud=new MSDASC.DataLinksClass();

cn.ConnectionString=str; // начальное значение параметров подключения
object ob =cn;

if(ud.PromptEdit(ref ob)) // показать диалог "Data Link Properties"
{ // нажали кнопку ОК:
connectionString=cn.ConnectionString;
}
// вернуть строку подключения
return(connectionString);
}


Переделать так, чтобы в свойствах связи с данными можно было выбирать среди поставщиков данных SQL Server, а не OLE DB?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Не заучивайте строку конекта...
    #37370941
Akisawa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AnarkiSib,

теперь (в новой студии) надо при подключении к COM пользоваться не классами, а интерфейсами, иначе выскаивает ошибка компиляции ("Внедрение типа взаимодействия невозможно. Используйте вместо него доступный интерфейс."), то есть:

ADODB.Connection cn=new ADODB.Connection();
MSDASC.DataLinks ud=new MSDASC.DataLinks();

Такой синтаксис вызывает недоумение (откуда у интерфейсов конструкторы?), но он работает и в старых версиях. Более того, у меня, например, при использовании классов в таком случае не приходили сообщения на обработчик событий COM, а с использованием интерфейсов приходят.
...
Рейтинг: 0 / 0
Не заучивайте строку конекта...
    #37371792
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Akisawaтеперь (в новой студии) надо при подключении к COMне надо в студии без особой нужды пользоваться COM, особенно при тривиальных задачах, вроде коннекта к базе.
...
Рейтинг: 0 / 0
Не заучивайте строку конекта...
    #37374271
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем так опасен ком, Кэт второй? )Чем так опасен ком, Кэт второй? )
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Не заучивайте строку конекта...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]