2011-08-15 20 views
37

Nigdy wcześniej nie użyłem "appSettings". W jaki sposób skonfigurować to w C#, aby korzystać z SqlConnection, to co używam do "connectionStrings"Sposób korzystania z ConfigurationManager.AppSettings

 SqlConnection con = new SqlConnection(); 
     con.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 

I to jest to, co mam na "AppSettings"

 SqlConnection con = new SqlConnection(); 
     con = ConfigurationManager.AppSettings("ConnectionString"); 

ale nie działa.

+1

jorame

+0

teraz Otrzymuję "Słowo kluczowe nieobsługiwane;" dsn ' – jorame

+0

Zmieniłem go na Data Sourc e, ale teraz dostaję błąd sieci. Próbuję połączyć się z AS400 i nie działa w nim Data Source. – jorame

Odpowiedz

21

ConfigurationManager.AppSettings jest w rzeczywistości właściwością, dlatego należy użyć nawiasów kwadratowych.

Podsumowując, oto co trzeba zrobić:

SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]); 

Problemem jest to, że próbowano ustawić con na sznurku, który nie jest poprawna. Musisz przekazać go do konstruktora lub ustawić właściwość con.ConnectionString.

+0

Zrobiłem to, co zrobiłeś, ale nadal dostaję błąd DSN – jorame

+1

Oznacza to, że masz błąd w ciągu połączenia. –

+0

cóż, próbuję użyć DSN dla mojego połączenia. Próbuję połączyć się z bazą danych DB2, która znajduje się na AS400. Wiem, że jeśli używam connectionstring na stronie .aspx, to działa, ale za każdym razem próbuję użyć go w kodzie za i otrzymuję komunikat Keyword not supported, gdy próbuję ru app. – jorame

0

należy użyć []

var x = ConfigurationManager.AppSettings["APIKey"]; 
37

Plik web.config powinna mieć taką strukturę:

<configuration> 
    <connectionStrings> 
     <add name="MyConnectionString" connectionString="..." /> 
    </connectionStrings> 
</configuration> 

Następnie, aby utworzyć połączenie SQL przy użyciu połączenia ciąg nazwie MyConnectionString:

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString); 

Jeśli wolisz zachować ciągi połączeń w sieci AppSettings sekcja pliku konfiguracyjnego, to będzie wyglądać następująco:

<configuration> 
    <appSettings> 
     <add key="MyConnectionString" value="..." /> 
    </appSettings> 
</configuration> 

I wówczas konstruktor SqlConnection będzie wyglądać następująco:

SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["MyConnectionString"]); 
+0

W przypadku AppSettings w pliku konfiguracyjnym, jaka jest wartość? – Sahil

+0

@Sahil Wartością jest sam ciąg połączenia. IMO, jeśli używasz ASP.NET z 'web.config', lepiej jest użyć elementu' connectionStrings' dla ciągów połączeń, ponieważ został on zaprojektowany specjalnie dla nich. Element 'appSettings' jest przeznaczony przede wszystkim do niestandardowych ustawień aplikacji, które są unikalne dla Twojej aplikacji i nie mają odpowiedników .NET (lub ASP.NET), takich jak lista adresów e-mail Twoich klientów lub informacja o tagach i prawach autorskich dla Twojego kota blog. – jpaugh

1

\ jeśli to, co napisali jest dokładnie to, czego używasz następnie twój problem jest trochę oczywisty. Teraz zakładając w Twojej web.config trzeba wam ciąg połączenia zdefiniowane następująco

<add name="SiteSqlServer" connectionString="Data Source=(local);Initial Catalog=some_db;User ID=sa;Password=uvx8Pytec" providerName="System.Data.SqlClient" /> 

w kodzie należy użyć wartości z atrybutu nazwy odnoszą się do ciągu połączenia, który chcesz (można właściwie zdefiniować kilka ciągów połączenia do różnych baz danych), więc trzeba

con.ConnectionString = ConfigurationManager.ConnectionStrings["SiteSqlServer"].ConnectionString; 
+2

Dlaczego zostało to odrzucone? Daje to samo rozwiązanie, co Justin's, która jest zaakceptowaną odpowiedzią ... przynajmniej mogli zostawić komentarz, by powiedzieć, dlaczego kmt –

+0

Zastanawiam się nad tym, ponieważ zakłada on, że używasz web.config, a nie app.config. ConnectionStrings jest dostępny tylko w web.config. –

+0

Komentarz, by poprosić o wyjaśnienie odpowiedzi, wystarczyłby, sprowokować szczęśliwe głosowanie ani nikogo nie kształcić, ani poprawić jakości odpowiedzi. –

Powiązane problemy