2013-03-21 5 views
11

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

Это то, что я пробовал.

protected void buttontb_click(object sender, EventArgs e) 
{ 
    System.Configuration.Configuration rootwebconfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/Mohtisham"); 
    System.Configuration.ConnectionStringSettings constring; 
    constring = rootwebconfig.ConnectionStrings.ConnectionStrings["northwindconnect"]; 
    SqlConnection sql = new SqlConnection(constring); 

    sql.Open(); 
    SqlCommand comm = new SqlCommand("Insert into categories (categoryName) values ('" + tb_database.Text + "')", sql); 
    comm.ExecuteNonQuery(); 
    sql.Close(); 
} 

Я получаю ошибку в подсказке для

SqlConnection sql = new SqlConnection(constring); 

в

System.data.SqlClient.Sqlconnection.Sqlconnection (строка) имеет некоторые недопустимые аргументы.

Я хочу, чтобы загрузить строку подключения из web.config в constring

+2

Это не связано с вопросом, но запись в БД из текстового поля инъекции причиной SQL. – Popeye

+0

@ Попэйе? Что ты предлагаешь? Каков наилучший способ хранения пользовательских значений ввода в базе данных? –

+0

Просто выполните поиск по Google, также вы можете сослаться на это http://www.mikesdotnetting.com/Article/113/Preventing-SQL-Injection-in-ASP.NET – Popeye

ответ

8

Это потому, что ConnectionStrings коллекция представляет собой набор ConnectionStringSettings объектов, но SqlConnection конструктор ожидает параметр string. Поэтому вы не можете просто пройти через constring.

Попробуйте это вместо этого.

SqlConnection sql = new SqlConnection(constring.ConnectionString); 
+0

Работал. Благодарю. –

4

попробовать это

readonly SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["northwindconnect"].ToString()); 
0

Я буду предлагает Вам создать функцию, а не непосредственно получить доступ к файлу web.config, как следовать

public static string GetConfigurationValue(string pstrKey) 
    { 
     var configurationValue = ConfigurationManager.AppSettings[pstrKey]; 
     if (!string.IsNullOrWhiteSpace(configurationValue)) 
      return configurationValue; 

     throw (new ApplicationException(
      "Configuration Tag is missing web.config. It should contain <add key=\"" + pstrKey + "\" value=\"?\"/>")); 

    } 

И использовать эту функцию в вас приложения

9

Вы можете просто дать Name вашему ConnectionString вфайл и сделать это:

web.config:

<add name="ConnectionStringName" connectionString=YourServer"; Initial Catalog=YourDB; Integrated Security=True"/> 

Код За:

SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionStringName"].ToString()); 
Смежные вопросы