web-dev-qa-db-ja.com

接続文字列をweb.configファイルに書き込み、そこから読み取る方法は?

次のようにWeb.configに接続文字列を書き込もうとしています。

<connectionStrings>
  <add name="Dbconnection" connectionString="Server=localhost; 
       Database=OnlineShopping ; Integrated Security=True"/>
</connectionStrings >

次のように読みます:

string strcon = 
    ConfigurationManager.ConnectionStrings["Dbconnection"].ConnectionString;
SqlConnection DbConnection = new SqlConnection(strcon);

プログラムを実行すると、null参照のためエラーが発生します。しかし、このコードを使用すると:

SqlConnection DbConnection = new SqlConnection();
DbConnection.ConnectionString = 
    "Server=localhost; Database=OnlineShopping ; Integrated Security=True";

エラーは表示されず、プログラムは正常に動作します!何が問題ですか?

12
user2715779

参照を追加してSystem.Configurationを追加します:-

System.Configuration.ConfigurationManager.
    ConnectionStrings["connectionStringName"].ConnectionString;

また、プロバイダー名を含むようにWebConfigファイルを変更できます。

<connectionStrings>
  <add name="Dbconnection" 
       connectionString="Server=localhost; Database=OnlineShopping;
       Integrated Security=True"; providerName="System.Data.SqlClient" />
</connectionStrings>
11
Rahul Tripathi

Web.config:

<connectionStrings>
    <add name="ConnStringDb" connectionString="Data Source=localhost;
         Initial Catalog=DatabaseName; Integrated Security=True;" 
         providerName="System.Data.SqlClient" />
</connectionStrings>

c#コード:

using System.Configuration;
using System.Data

SqlConnection _connection = new SqlConnection(
          ConfigurationManager.ConnectionStrings["ConnStringDb"].ToString());

try
{
    if(_connection.State==ConnectionState.Closed)
        _connection.Open();
}
catch { }
9
Sumon Banerjee

構成ファイル(web.config)が正しい場所にあり、接続文字列が(生成された)ファイルに実際にあることを確認しますか?ファイルを公開すると、web.release.configのコンテンツがコピーされる場合があります。

構成と接続文字列へのアクセスは、私には大丈夫に見えます。私は常にプロバイダー名を追加します

<connectionStrings>
  <add name="Dbconnection" 
       connectionString="Server=localhost; Database=OnlineShopping; 
       Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
4
slfan

これを試してくださいアプリケーションでweb.configファイルを開き、次のようにconnectionStringsセクションにサンプルのdb接続を追加します

<connectionStrings>
<add name="yourconnectinstringName" connectionString="Data Source= DatabaseServerName; Integrated Security=true;Initial Catalog= YourDatabaseName; uid=YourUserName; Password=yourpassword; " providerName="System.Data.SqlClient"/>
</connectionStrings >
2
user3899014

これを試して

var configuration = WebConfigurationManager.OpenWebConfiguration("~");
var section = (ConnectionStringsSection)configuration.GetSection("connectionStrings");
section.ConnectionStrings["MyConnectionString"].ConnectionString = "Data Source=...";
configuration.Save();
2
santosh singh

WebConfigurationManagerの代わりにConfigurationManagerを使用してみてください

1
ProgramFOX

アプリケーションでweb.configファイルを開いた後、次のようにconnectionStringsセクションにサンプルdb接続を追加します。

<connectionStrings>  
    <add name="yourconnectinstringName" connectionString="Data Source= DatabaseServerName; Integrated Security=true;Initial Catalog= YourDatabaseName; uid=YourUserName; Password=yourpassword; " providerName="System.Data.SqlClient" />   
</connectionStrings>  

Web.configファイルでconnectionStringsを宣言する:

 <add name="dbconnection" connectionString="Data Source=Soumalya;Integrated Security=true;Initial Catalog=MySampleDB" providerName="System.Data.SqlClient" />   

データベースサーバーにアクセスするためのユーザー名とパスワードは必要ありません。次に、コードビハインドファイルのweb.configファイルから接続文字列を取得するコードを記述します。コードビハインドファイルに次の名前空間を追加します。

using System.Configuration;

この名前空間は、web.configファイルから構成セクションの詳細を取得するために使用されます。

using System;  
using System.Data.SqlClient;  
using System.Configuration;  
public partial class _Default: System.Web.UI.Page {  
    protected void Page_Load(object sender, EventArgs e) {  
        //Get connection string from web.config file  
        string strcon = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString;  
        //create new sqlconnection and connection to database by using connection string from web.config file  
        SqlConnection con = new SqlConnection(strcon);  
        con.Open();  
    }  
}  
0
Raju Paladiya