Как записать строку подключения в файл 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);

при запуске программы я получаю ошибку из-за нулевой ссылки. но когда я использую этот код:

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

Я не получаю никакой ошибки, и программа работает правильно! В чем проблема?

8 ответов

Добавить ссылку, чтобы добавить 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>

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 { }

Вы уверены, что ваш файл конфигурации (web.config) находится в нужном месте, а строка подключения действительно находится в (сгенерированном) файле? Если вы публикуете свой файл, содержимое web.release.config может быть скопировано.

Конфигурация и доступ к строке подключения выглядит хорошо для меня. Я бы всегда добавил имя провайдера

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

Попробуйте этоПосле того, как откройте файл web.config в приложении и добавьте пример подключения к базе данных в разделе connectionStrings, как это

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

Попробуй это

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

Попробуй использовать WebConfigurationManager вместо ConfigurationManager

Два способа добавления строки подключения

если вы настроили имя экземпляра при установке mssql, обязательно укажите правильное имя экземпляра в файле web.config.

  1. откройте файл web.config

После открытия файла web.config в приложении добавьте пример соединения с БД в разделе connectionStrings, например:

<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:

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

Для доступа к серверу базы данных не требуется имя пользователя и пароль. Теперь напишите код, чтобы получить строку подключения из файла web.config в нашем файле codebehind. Добавьте следующее пространство имен в файл codebehind.

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();  
    }  
}  
Другие вопросы по тегам