Получить строку подключения из Web.config в asp.net
Я хочу знать, как получить строку подключения из файла web.config в asp.net.
Я просто знаю только ниже.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
namespace Sherserve.DataAccessLayer
{
public class DBGateway
{
public static string conString;
public DBGateway()
{
conString = ConfigurationManager.ConnectionStrings["test"].ToString();
}
}
}
Ответы
Ответ 1
Использование ConfigurationManager.ConnectionStrings
- это единственный правильный способ, чтобы правильно использовать его с проверкой работоспособности, вы можете иметь такой код:
public DBGateway()
{
ConnectionStringSettings mySetting = ConfigurationManager.ConnectionStrings["test"];
if (mySetting == null || string.IsNullOrEmpty(mySetting.ConnectionString))
throw new Exception("Fatal error: missing connecting string in web.config file");
conString = mySetting.ConnectionString;
}
Это вызовет полезную ошибку, если строка соединения отсутствует, вместо критической ошибки "нулевого объекта".
Стоит упомянуть, что класс ConnectionStringSettings
переопределяет метод ToString()
:
public override string ToString()
{
return this.ConnectionString;
}
Таким образом, это означает, что использование ConfigurationManager.ConnectionStrings["test"].ToString()
такое же, как ConfigurationManager.ConnectionStrings["test"].ConnectionString
однако вы все же лучше выполняете проверку работоспособности, и лично он выглядит более чистым, чтобы использовать фактическое свойство, а не зависят от класса, чтобы дать ему.
Ответ 2
Вот целое решение: -
string constring = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString;
SqlConnection con = new SqlConnection(constring);
DataSet ds = new DataSet();
try
{
SqlDataAdapter dataAdapter = new SqlDataAdapter(query, con);
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
con.Open();
dataAdapter.Fill(ds, "table");
return ds;
}
catch (Exception ex)
{
}
finally
{
if (con.State == System.Data.ConnectionState.Open)
con.Close();
}
Вот как вы можете извлекать записи из базы данных в datatable.
Надеюсь, это то, что вы искали.
Ответ 3
У меня есть метод в моем классе WebAssistant. У меня есть ключ в appSettings, который содержит мое имя WebAppName, проверьте приведенную ниже строку:
<add key="DOMAIN_NAME" value="mRizvandi.com"/>
и мое имя соединения alwyas имеет шаблон "DomainName" + "DBConnectionString", такой как:
<add name="mRizvandiDBConnectionString" connectionString=...
Хорошо, все готовы получить connectionstring без прохождения любой строки.
public static string GetDBConnectionString()
{
string retValue = "";
string domainUrl = "";
string connectionKey = "";
string dbConnectionString = "";
domainUrl = GetDomainUrl();
connectionKey = domainUrl.Substring(0, domainUrl.IndexOf(".")) + "DBConnectionString";
dbConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings[connectionKey].ToString();
retValue = dbConnectionString;
return retValue;
}
Надеюсь, это будет полезно.
Ответ 4
Следующий код работает для меня. Я добавил исключение в случае, если connectionString не основано в web.config
web.config:
<configuration>
<connectionStrings>
<add name="DBConnection" connectionString="Data Source=myaddress;Initial Catalog=MyCatalog;User ID=myuser;Password=pass;Encrypt=True;TrustServerCertificate=False"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
В моем классе связи:
static internal string GetSqlConnectionString(){
try {
ConnectionStringSettings mySetting = ConfigurationManager.ConnectionStrings("DataBaseConnection");
if (mySetting == null)
throw new Exception("Database connection settings have not been set in Web.config file");
return mySetting.ConnectionString;
} catch (Exception ex) {
throw;
}}
Ответ 5
Пытаться
string ConString = System.Configuration.ConfigurationManager.ConnectionStrings [ConfigurationManager.ConnectionStrings.Count -1]. ConnectionString;