2009-06-17 54 views
24

Khi tôi khởi động ứng dụng, tôi nhận được: Thuộc tính ConnectionString chưa được khởi tạo.Cách khắc phục "Thuộc tính ConnectionString chưa được khởi tạo"

Web.config:

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

Các stack phúc:

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 

Tôi khá mới để NET và tôi không có được thế này. Tôi đã tìm thấy rất nhiều câu trả lời trên Google, nhưng không có câu trả lời nào thực sự khắc phục được sự cố của tôi.

Điều đó có nghĩa là gì? Web.config của tôi có tệ không? Chức năng của tôi có tệ không? Cấu hình SQL của tôi có hoạt động không chính xác không (tôi đang sử dụng sqlexpress)?

Vấn đề chính của tôi ở đây là tôi không chắc chắn nơi để bắt đầu gỡ lỗi này ... bất cứ điều gì sẽ giúp đỡ.

EDIT:

đang Failling:

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

sqlquery là một truy vấn như "select * from table". sqlParams không có liên quan ở đây.

Vấn đề khác ở đây là công ty của tôi sử dụng MySQLHelper, và tôi không có khả năng hiển thị trên nó (chỉ có một dll cho một lib trợ giúp). Nó đã được làm việc tốt trong các dự án khác, vì vậy tôi 99% rằng lỗi không đến từ đây.

Tôi đoán nếu không có cách nào để gỡ lỗi nó mà không thấy mã, tôi sẽ phải đợi để liên lạc với người đã tạo trình trợ giúp này để lấy mã.

+1

Bạn có thể đăng chuỗi kết nối từ webconfig và mã không sử dụng không? – kscott

+0

đã thêm một số infos – marcgg

Trả lời

27

Tham chiếu chuỗi kết nối nên được thực hiện như vậy:

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

ConfigurationManager.AppSettings["ConnectionString"] sẽ tìm trong AppSettings cho một cái gì đó mang tên ConnectionString, mà nó sẽ không tìm thấy. Đây là lý do tại sao thông báo lỗi của bạn cho biết số "ConnectionString" property has not been initialized, vì nó đang tìm kiếm thuộc tính được khởi tạo là AppSettings có tên ConnectionString.

ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString hướng dẫn tìm chuỗi kết nối có tên "MyDB".

Here is someone talking about using web.config connection strings

+0

Nó đã sửa nó! Là những gì tôi đang làm thực hành xấu? – marcgg

+0

Ý của bạn là gì? Cách bạn đang cố gắng tham chiếu chuỗi kết nối không chính xác, tuy nhiên nếu bạn đang cố gắng tham chiếu giá trị của một số nút của AppSettings, nó sẽ là chính xác. – kscott

+0

Tôi có nghĩa là, là xấu của nhận được chuỗi kết nối theo cách đó? – marcgg

15

Bạn gặp lỗi này khi nguồn dữ liệu cố gắng liên kết với dữ liệu nhưng không thể vì nó không thể tìm thấy chuỗi kết nối. Theo kinh nghiệm của tôi, điều này thường không phải do lỗi trong web.config (mặc dù tôi không chắc chắn 100% về điều này).

Nếu bạn đang chỉ định một nguồn dữ liệu theo lập trình (chẳng hạn như SqlDataSource) hoặc tạo truy vấn (tức là sử dụng kết hợp SqlConnection/SqlCommand), hãy đảm bảo bạn đã gán cho nó một ConnectionString.

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

Nếu bạn đang hooking lên một yếu tố databound đến một nguồn dữ liệu (ví dụ: một GridView hoặc ComboBox với một SqlDataSource), đảm bảo các nguồn dữ liệu được gán cho một trong những chuỗi kết nối của bạn.

Đăng mã của bạn (để phần tử dữ liệu và web.config được an toàn) và chúng tôi có thể xem xét nó.

EDIT: Tôi nghĩ rằng vấn đề là bạn đang cố gắng lấy chuỗi kết nối từ vùng AppSettings và theo chương trình không phải là nơi nó tồn tại. Hãy thử thay thế bằng ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString (nếu ConnectionString là tên của chuỗi kết nối của bạn.)

+0

Tôi đã thêm một số mã, không chắc chắn nếu nó làm cho vấn đề của tôi rõ ràng hơn. – marcgg

+0

Tôi không chắc chắn nếu tôi nhận được nó, tôi nên di chuyển vị trí của chuỗi kết nối của tôi trong web.config? – marcgg

+0

không có trong AppSettings btw – marcgg

3

Các chuỗi kết nối là không trong AppSettings.

gì bạn đang tìm kiếm là:

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

Sử dụng [] thay vì() như sau ví dụ.

SqlDataAdapter adapter = new SqlDataAdapter(sql, ConfigurationManager.ConnectionStrings["FADB_ConnectionString"].ConnectionString); 
      DataTable data = new DataTable(); 
      DataSet ds = new DataSet(); 
Các vấn đề liên quan