"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를 사용하고 있습니까)?
여기서 나의 주요 문제는 이것을 어디서 디버그 해야할지 잘 모르겠다는 것입니다 ... 어떤 것이 도움이 될 것입니다.
편집하다:
Failling 코드 :
MySQLHelper.ExecuteNonQuery(
ConfigurationManager.AppSettings["ConnectionString"],
CommandType.Text,
sqlQuery,
sqlParams);
sqlquery는 "select * from table"과 같은 쿼리입니다. sqlparams는 여기서는 관련이 없습니다.
여기서 또 다른 문제는 회사가 MySQLHelper를 사용하고 있으며 이에 대한 가시성이 없다는 것입니다 (도우미 LIB에 대한 DLL 만 있습니다). 다른 프로젝트에서 잘 작동 했으므로 오류가 여기에서 나오지 않는 99%입니다.
코드를 보지 않고 디버깅 할 방법이 없다면 코드를 얻기 위해이 헬퍼를 만든 사람과 연락하기 위해 기다려야합니다.
해결책
연결 문자열 참조는 다음과 같이 수행해야합니다.
MySQLHelper.ExecuteNonQuery(
ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString,
CommandType.Text,
sqlQuery,
sqlParams);
ConfigurationManager.AppSettings["ConnectionString"]
would be looking in the AppSettings
이름이 지정된 것 ConnectionString
, 찾지 못할 것입니다. 이것이 오류 메시지가 표시된 이유입니다 "ConnectionString" property has not been initialized
, 초기화 된 속성을 찾고 있기 때문에 AppSettings
명명 된 ConnectionString
.
ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString
"mydb"라는 연결 문자열을 찾도록 지시합니다.
다른 팁
데이터 소스가 데이터에 바인딩하려고 시도하지만 연결 문자열을 찾을 수 없기 때문에이 오류가 발생합니다. 내 경험상, 이것은 일반적으로 web.config의 오류 때문이 아닙니다 (100% 확실하지는 않지만).
프로그래밍 방식으로 데이터 소스 (예 : SQLDATASOURCE)를 할당하거나 쿼리를 작성하는 경우 (예 : SQLConnection/SQLCommand 조합을 사용하여) ConnectionString을 할당해야합니다.
SqlConnection myCon = new SqlConnection(ConfigurationManager.ConnectionStrings[nameOfString].ConnectionString;
데이터 소스 요소를 데이터 소스에 연결하는 경우 (예 : GridView 또는 ComboBox를 SQLDATASOURCE에 연결) DataSource가 연결 문자열 중 하나에 할당되어 있는지 확인하십시오.
코드를 게시하면 (데이터 라운드 요소 및 Web.Config가 안전하도록)를 게시하면이를 살펴볼 수 있습니다.
편집하다: 문제는 AppSettings 영역에서 연결 문자열을 얻으려고 노력하고 있으며 프로그래밍 방식으로 존재하지 않는 것입니다. 그것을 대체하십시오 ConfigurationManager.ConnectionStrings["ConnectionString"].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");
잘 작동해야합니다