Squeak.ru - шаблоны программирования

Изменение ConnectionString для SQL Server в приложении C #

Я создал приложение для отображения и рендеринга отчетов с SQLServer в pdf / doc / xls. Поскольку мне нужно изменить ConnectionString во время выполнения, я прошу пользователя ввести значения во время выполнения. Итак, после часов поиска на тысячах сайтов я нашел разные решения, но ни одно из них мне не помогло.

Я использую изменение соединения одним из своих методов, как показано ниже.

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.ConnectionStrings.ConnectionStrings.Remove("MapSoftRPTConnectionString");
config.ConnectionStrings.ConnectionStrings.Add(new ConnectionStringSettings("MapSoftRPTConnectionString", Parameters.ConnectionString()));
config.Save(ConfigurationSaveMode.Modified, true);
ConfigurationManager.RefreshSection("connectionStrings");

У меня есть строка по умолчанию, и с ней все отлично работает на моей машине. Когда я (как пользователь) намеренно вставляю неверные значения, он все еще работает. Итак, мои изменения не учитываются.

Что здесь происходит?

РЕДАКТИРОВАТЬ:

Мне не нужно сохранять его в конфигурации, но все, что я хочу, - это дать пользователю возможность изменять сервер и учетную запись при создании отчетов во время выполнения. Известно, что реализованный процесс выглядит следующим образом:

// .........
// get parameters from user input and store them in variables

// then change connection string
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.ConnectionStrings.ConnectionStrings["MapSoftRPT.Properties.Settings.MapSoftRPTConnectionString"].ConnectionString = @Parameters.ConnectionString();
config.Save(ConfigurationSaveMode.Modified);

// then start rendering report
this.reportViewer1.Reset();
this.reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local;

this.reportViewer1.LocalReport.ReportPath = AppDomain.CurrentDomain.BaseDirectory + "\\" + Parameters.getReportRDLCName(repType);
this.reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource(Parameters.getReportDataSource(repType), Parameters.getReportDataTable(repType)));

bytes = reportViewer1.LocalReport.Render("PDF"); // and send it to FileStream...

  • Использовал ConnectionStringBuilder и передал строку в конструктор Connection. Или важно сохранить значение, созданное во время выполнения, в файл конфигурации? 15.01.2016
  • Я понимаю, что вы пытаетесь сделать; вместо этого маршрута, почему вы не можете определить все возможные строки подключения где-нибудь в виде списка и предоставить пользователю раскрывающийся список для выбора одной? легко передать выбранное значение в объект подключения вместо того, чтобы динамически изменять файл конфигурации 15.01.2016
  • @Jodrell отредактировал мой вопрос 19.01.2016

Ответы:


1

Я не уверен, есть ли конкретная причина, по которой вам нужно сохранить его в строках config.connection, но если нет ... вы пробовали,

string Connstr = "Data Source =" + SelectedIP + "; Initial Catalog =" + dbName + "; User ID =" + txtUsername.Text + "; Password =" + txtPassword.Text + "";

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

15.01.2016
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...