WedX - журнал о программировании и компьютерных науках

Свойство строки подключения не было инициализировано C# и XML

Я пытаюсь проверить соединение и сохранить учетные данные в файле конфигурации, но я продолжаю получать эту ошибку «Свойство ConnectionString не было инициализировано».

Вот код С#

private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            StringBuilder str = new StringBuilder("server=");
            str.Append(textBox1.Text);
            str.Append(";database=");
            str.Append(textBox2.Text);
            str.Append(";UID=");
            str.Append(textBox3.Text);
            str.Append(";password=");
            str.Append(textBox4.Text);
            string strcon = str.ToString();
            updateConfigFile(strcon);

            SqlConnection con = new SqlConnection();

            //Refresh Connection String each time else
            //it will use previous connection string.
            ConfigurationManager.RefreshSection("connectionStrings");
            con.ConnectionString = ConfigurationManager.ConnectionStrings["con"].ConnectionString;

            //Check the new connection string is working or not
            con.Open();
            SqlCommand cmd = new SqlCommand("select * from egtab3");
            cmd.ExecuteNonQuery();
            MessageBox.Show("Connected Sucessfully");
            con.Close();

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

    public void updateConfigFile(string con)
    {
        //Updating Config File
        XmlDocument xmldoc = new XmlDocument();

        //Loading the Config File
        xmldoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
        foreach (XmlElement xElement in xmldoc.DocumentElement)
        {
            if (xElement.Name == "connectionStrings")
            {
                //Setting the connection string
                xElement.FirstChild.Attributes[4].Value = con;
            }
        }
        //writing the connection string in config file
        xmldoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
    }

а вот xml код

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="con" providerName="using System.Data.SqlClient" 
connectionString=""/>
</connectionStrings>
</configuration>
11.05.2017

  • В вашем app.config значение строки подключения пусто, в вашем коде сборка строки подключения вручную никогда не используется для вызова метода updateConfigFile (и, кстати, я не знаю, является ли UID допустимым ключом для Sql Server). Итак, что еще делать вы ожидаете, что произойдет, когда вы попытаетесь открыть соединение? 11.05.2017
  • Спасибо . Я обновил код. Теперь я получаю эту ошибку: передаваемый индекс выходит за пределы допустимого диапазона. Что мне теперь делать? 11.05.2017
  • Подсчитайте атрибуты, ожидаемые в записи строки подключения. Есть три атрибута, поэтому правильный диапазон для индекса — от 0 до 2, где 2 следует использовать, а не 4. 11.05.2017
  • Спасибо!. Это сработало. Пишет, что подключено успешно. Теперь дело в том, что детали не сохраняются в файле конфигурации. Что мне теперь делать? 11.05.2017
  • Откуда ты это знаешь? 11.05.2017
  • Если речь идет о подключении, я пробовал с неверными учетными данными. Пишет, что авторизация не удалась. Соединение работает нормально. Я проверил файл app.config. В нем ничего не хранится. 11.05.2017
  • Ваш код записывает не app.config, а файл конфигурации, присутствующий в каталоге запуска вашей программы. Этот файл назван в честь вашего исполняемого имени с расширением config. Вы найдете его в подпапке BIN\DEBUG (или вариант x86) в папке вашего проекта. 11.05.2017
  • понятно. ты прав. Он был назван так же, как файл exe. в любом случае, я попытался открыть его, и код xml появился без изменений. Он был пуст, как и прежде. Я попытался возиться, и он выдает ссылку на объект, не установленную на экземпляр исключения объекта. 11.05.2017
  • Проверьте ....vshost.exe.config 11.05.2017
  • Сделано это. Без изменений 11.05.2017
  • Помните, что каждый раз, когда вы запускаете новый сеанс отладки, файл app.config копируется обратно в папку BIN\DEBUG, поэтому содержимое сбрасывается каждый раз, когда вы нажимаете F5 для запуска приложения внутри, а не что произойдет, если вы запустите приложение отдельно? 11.05.2017
  • Спасибо! Это сделало это. содержимое сохраняется в файле, когда я запускаю его автономно. Спасибо за уделенное время. 11.05.2017
  • Рад помочь. До новых встреч на СО 11.05.2017
  • Во-первых, используйте SqlConnectionStringBuilder< /а> класс. Во-вторых, без прав администратора ваше приложение не сможет писать в папку Program Files, где ваше приложение будет установлено у конечного пользователя. В любом случае вы не должны перезаписывать файл app.config. Сохраните эти настройки в другом месте. 11.05.2017

Ответы:


1

Добавить обновление перед получением из конфигурации

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                StringBuilder str = new StringBuilder("server=");
                str.Append(textBox1.Text);
                str.Append(";database=");
                str.Append(textBox2.Text);
                str.Append(";UID=");
                str.Append(textBox3.Text);
                str.Append(";password=");
                str.Append(textBox4.Text);

                updateConfigFile(str);

                SqlConnection con = new SqlConnection();

                //Refresh Connection String each time else
                //it will use previous connection string.
                ConfigurationManager.RefreshSection("connectionStrings");
                con.ConnectionString = ConfigurationManager.ConnectionStrings["con"].ConnectionString;

                //Check the new connection string is working or not
                con.Open();
                SqlCommand cmd = new SqlCommand("select * from egtab3");
                cmd.ExecuteNonQuery();
                MessageBox.Show("Connected Sucessfully");
                con.Close();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
11.05.2017
Новые материалы

Как создать диаграмму градиентной кисти с помощью D3.js
Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


Для любых предложений по сайту: [email protected]