web-dev-qa-db-ja.com

「ConnectionStringプロパティが初期化されていません」の修正方法

アプリケーションを起動すると、次のメッセージが表示されます。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は、「select * from table」のようなクエリです。 sqlParamsはここでは関係ありません。

ここでの他の問題は、私の会社がMySQLHelperを使用していることであり、私はそれについて可視性がありません(ヘルパーライブラリ用のdllのみがあります)。他のプロジェクトではうまく機能しているので、99%はここからエラーが発生しないと思います。

コードを見ずにデバッグする方法がない場合は、コードを取得するためにこのヘルパーを作成した人と連絡を取るまで待たなければなりません。

34
marcgg

接続文字列の参照は次のように行う必要があります。

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

ConfigurationManager.AppSettings["ConnectionString"]AppSettingsConnectionStringという名前の何かを探しますが、それは見つかりません。これが、エラーメッセージに"ConnectionString" property has not been initializedAppSettingsという名前のConnectionStringの初期化されたプロパティを探しているためです。

ConfigurationManager.ConnectionStrings["MyDB"].ConnectionStringは、「MyDB」という名前の接続文字列を探すように指示します。

これはweb.config接続文字列の使用について話している人です

28
kscott

データソースがデータにバインドしようとしたが、接続文字列が見つからないためにバインドできない場合に、このエラーが発生します。私の経験では、これは通常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が接続文字列の名前である場合)。

16
Matthew Jones

接続文字列はnot in AppSettingsです。

あなたが探しているのは:

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

単にコードビハインドページで以下を使用します。

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

それはうまくいくはずです

0
Priyank Raunak

次の例のように、()の代わりに[]を使用します。

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