Вопрос

Я дал приведенную выше строку, я хочу получить адрес сервера, DB1, uid и **** эти значения из этой строки.

Это было полезно?

Решение

Нет необходимости анализировать строку подключения, если BCL может сделать это за вас:

var builder = new OleDbConnectionStringBuilder(connectionString);
var provider = builder.Provider;
var dataSource = builder.DataSource;
var initialCatalog = builder["Initial Catalog"];
var userID = builder["User ID"];
var password = builder["Password"];

Обратите внимание, что для строки подключения OLE DB только стандартные межпоставочные свойства имеют строго типизированные имена свойств, а все остальные доступны через индексатор.

Другие советы

Не используйте регулярное выражение.

Разберите строку подключения, используя SqlConnectionStringBuilder а затем получить доступ к ключам оттуда.

var b = new SqlConnectionStringBuilder(myConnectionString);
var dataSource = b["Data Source"]; 
// etc.

Гораздо проще, ремонтопригоднее и надежнее.

data source=([^;]*);Initial Catalog=([^;]*);user id=([^;]*);Password=([^;"]*)

Затем у вас есть совпадения в группах с 1 по 4.Если вам скучно, вы можете назвать группы;улучшает читаемость кода, но редко улучшает читаемость самого регулярного выражения.

Разве не проще разделить значение, используя ';'; char, а затем разделите каждый элемент на '=' char?

Таким образом, пользователи смогут редактировать строку подключения и даже менять порядок элементов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top