2013-06-28 2 views
0

Я пытаюсь подключиться к базе данных, но он показывает ошибку «null». Итак, Я попробовал открыть предыдущую форму, на которой я практиковал, все оказалось отлично.Null connection - Подключение к ASP.NET - Microsoft SQL Server

Это мой код:

string username = txtusername.Text; 
     string firstname = txtfirstname.Text; 
     string lastname = txtlastname.Text; 
     string email = txtemail.Text; 
     string password = txtpass.Text; 
     string gender = rbgender.Text; 
     string nationality = dcountry.Text; 
     string phone = txtphone.Text; 

     string connection = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString; 
     SqlConnection connect = new SqlConnection(connection); 
     string command = "INSERT INTO Persons(username, firstname, lastname, email, password, gender, nationality, phone) VALUES('@username','@firstname','@lastname','@email','@password','@gender','@nationality','@phone')"; 


     SqlCommand insert = new SqlCommand(command +","+ connection); 
     insert.Parameters.AddWithValue("@username", username); 
     insert.Parameters.AddWithValue("@firstname", firstname); 
     insert.Parameters.AddWithValue("@lastname", lastname); 
     insert.Parameters.AddWithValue("@email", email); 
     insert.Parameters.AddWithValue("@password", password); 
     insert.Parameters.AddWithValue("@gender", gender); 
     insert.Parameters.AddWithValue("@nationality", nationality); 
     insert.Parameters.AddWithValue("@phone", phone); 
     insert.ExecuteNonQuery(); 
     connect.Close(); 

Есть ли у него что-нибудь сделать с ConnectionStrings в web.config?

<connectionStrings> 
<add name="ApplicationServices" 
    connectionString="Data Source=ADRIAN-LAPTOP\SQL;Initial Catalog=New;Integrated Security=True" 
    providerName="System.Data.SqlClient" /> 

+0

, пожалуйста, сообщите нам, к чему конкретно вы столкнулись. – Pawan

+0

Можете ли вы добавить попытку catch и сделать исключение, потому что легче узнать, что именно происходит. –

+0

В дополнение к тому, что уже сказали другие, 'SqlCommand insert = new SqlCommand (команда +", "+ соединение);' должен быть 'SqlCommand insert = new SqlCommand (команда, соединение);'. Или даже лучше, оберните его в 'using (...) {...}'. – user1429080

ответ

8

Ключ в web.config файла отличается, то он используется в коде.

Должно быть,

string connection = ConfigurationManager.ConnectionStrings["ApplicationServices"] 
             .ConnectionString; 

И не нужно завернуть имена параметров в одинарные кавычки.

string command = @" 
    INSERT INTO Persons 
     (username, firstname, lastname, email, password, gender, nationality,phone) 
    VALUES 
     (@username,@firstname,@lastname,@email,@password,@gender,@nationality,@phone)"; 

Примечание стороны, всегда выбрасывайте ADO ресурсы, используя using заявление (или позвонив по телефону Dispose()).

using(SqlConnection connect = new SqlConnection(connectionString)) 
{ 
    // 
} 
+0

Вау, спасибо. Я также заметил (я действительно получил сообщение об ошибке), что забыл открыть соединение. XD – Belzelga

+0

Также поместите инструкцию using на свой SQLCommand. –