Как исправить “Свойство ConnectionString не было инициализировано”

StackOverflow https://stackoverflow.com/questions/1007786

Вопрос

Когда я запускаю свое приложение, я получаю: Свойство ConnectionString не было инициализировано.

Web.конфигурация:

<connectionStrings>
    <add name="MyDB"
         connectionString="Data Source=localhost\sqlexpress;Initial Catalog=mydatabase;User Id=myuser;Password=mypassword;" />
</connectionStrings>

Стек , являющийся:

System.Data.SqlClient.SqlConnection.PermissionDemand() +4876643
System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection) +20
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117
System.Data.SqlClient.SqlConnection.Open() +122

Я довольно новичок в .NET, и я не понимаю этого.Я нашел много ответов в Google, но ни один из них по-настоящему не устранил мою проблему.

Что это значит?Мой web.config плохой?Моя функция плохая?Моя конфигурация SQL работает неправильно (я использую sqlexpress)?

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

Редактировать:

Код сбоя:

MySQLHelper.ExecuteNonQuery(
ConfigurationManager.AppSettings["ConnectionString"],
CommandType.Text,
sqlQuery,
sqlParams);

SqlQuery - это запрос типа "выбрать * из таблицы".Параметры sqlParams здесь неуместны.

Другая проблема здесь заключается в том, что моя компания использует MySQLHelper, и у меня нет доступа к нему (есть только dll для вспомогательной библиотеки).Это прекрасно работало в других проектах, так что я на 99% уверен, что ошибка возникает не отсюда.

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

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

Решение

Ссылка на строку подключения должна выполняться как таковая:

MySQLHelper.ExecuteNonQuery(
ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString,
CommandType.Text,
sqlQuery,
sqlParams);

ConfigurationManager.AppSettings["ConnectionString"] было бы искать в AppSettings для чего - то названного ConnectionString, который он не смог бы найти.Вот почему в вашем сообщении об ошибке указано "ConnectionString" property has not been initialized, потому что он ищет инициализированное свойство AppSettings названный ConnectionString.

ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString указывает искать строку подключения с именем "MyDB".

Вот кто-то говорит об использовании строк подключения web.config

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

Вы получаете эту ошибку, когда источник данных пытается выполнить привязку к данным, но не может, поскольку он не может найти строку подключения.По моему опыту, обычно это происходит не из-за ошибки в web.config (хотя я не уверен в этом на 100%).

Если вы программно назначаете источник данных (например, SqlDataSource) или создаете запрос (т.е.используя комбинацию SqlConnection / SqlCommand), убедитесь, что вы присвоили ему ConnectionString .

SqlConnection myCon = new SqlConnection(ConfigurationManager.ConnectionStrings[nameOfString].ConnectionString;

Если вы подключаете элемент, связанный с базой данных, к источнику данных (т.е.GridView или ComboBox для SqlDataSource), убедитесь, что источник данных назначен одной из ваших строк подключения.

Опубликуйте свой код (для обеспечения безопасности элемента databound и web.config), и мы сможем взглянуть на него.

Редактировать: Я думаю, проблема в том, что вы пытаетесь получить строку подключения из области AppSettings, а программно это не то место, где она существует.Попробуйте заменить это на ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString (если ConnectionString - это имя вашей строки подключения.)

Строка подключения является не в Настройки приложений.

То, что вы ищете, находится в:

System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"]...

Используйте [] вместо (), как показано в примере ниже.

SqlDataAdapter adapter = new SqlDataAdapter(sql, ConfigurationManager.ConnectionStrings["FADB_ConnectionString"].ConnectionString);
            DataTable data = new DataTable();
            DataSet ds = new DataSet();

Просто в Коде за использованием Страницы:-

SqlConnection con = new SqlConnection("Data Source = DellPC; Initial Catalog = Account; user = sa; password = admin");

Это должно Сработать Просто Отлично

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