Как исправить «Свойство ConnectionString не было инициализировано» - PullRequest
32 голосов
/ 17 июня 2009

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

Web.config:

<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% уверен, что ошибка не в этом.

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

Ответы [ 5 ]

28 голосов
/ 17 июня 2009

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

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

16 голосов
/ 17 июня 2009

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

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

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

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

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

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

3 голосов
/ 17 июня 2009

Строка подключения не в AppSettings .

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

System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"]...
0 голосов
/ 30 апреля 2019

Просто в коде позади страницы используйте: -

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

Это должно работать просто отлично

0 голосов
/ 24 февраля 2011

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

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