修正方法“ ConnectionStringプロパティが初期化されていません”
-
06-07-2019 - |
質問
アプリケーションを起動すると、 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はここでは関係ありません。
ここでのもう1つの問題は、私の会社がMySQLHelperを使用していることであり、可視性がありません(ヘルパーライブラリ用のdllのみがあります)。他のプロジェクトではうまく機能しているので、99%はここからエラーが発生しないと思います。
コードを見ずにデバッグする方法がない場合は、コードを取得するためにこのヘルパーを作成した人と連絡を取るまで待たなければなりません。
解決
接続文字列の参照は次のように実行する必要があります。
MySQLHelper.ExecuteNonQuery(
ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString,
CommandType.Text,
sqlQuery,
sqlParams);
ConfigurationManager.AppSettings [&quot; ConnectionString&quot;]
は、 ConnectionString
という名前の何かを AppSettings
で探しますが、見つけることはできません。これが、エラーメッセージが&quot; ConnectionString&quot;を示した理由です。
。
ConnectionString
という名前の AppSettings
の初期化されたプロパティを探しているため、プロパティは初期化されていません
ConfigurationManager.ConnectionStrings [&quot; MyDB&quot;]。ConnectionString
は、&quot; MyDB&quot;という名前の接続文字列を検索するように指示します。
他のヒント
データソースがデータにバインドしようとしたが、接続文字列が見つからないためにバインドできない場合、このエラーが発生します。私の経験では、これは通常web.configのエラーによるものではありません(私はこれを100%確信していませんが)。
プログラムでデータソース(SqlDataSourceなど)を割り当てるか、クエリを作成する(つまり、SqlConnection / SqlCommandの組み合わせを使用する)場合は、ConnectionStringを割り当てたことを確認してください。
SqlConnection myCon = new SqlConnection(ConfigurationManager.ConnectionStrings[nameOfString].ConnectionString;
データバインドされた要素をデータソースに接続する場合(GridViewまたはComboBoxをSqlDataSourceに接続する場合)、データソースが接続文字列の1つに割り当てられていることを確認してください。
コードを投稿して(データバインドされた要素とweb.configが安全になるように)、確認することができます。
編集:問題は、AppSettings領域から接続文字列を取得しようとしていることであり、プログラムではそれが存在しないことです。それを ConfigurationManager.ConnectionStrings [&quot; ConnectionString&quot;]。ConnectionString
に置き換えてみてください(ConnectionStringが接続文字列の名前の場合)
接続文字列が AppSettings にない。
探しているのは次の場所です:
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");
正常に動作するはずです