2017-01-24 4 views
0

У меня есть простая форма, которая читает users name, email и city. Я создал базу данных и таблицу с полями id, name, email и city. Когда я запускаю код, я не встречаю никаких ошибок или исключений, но не могу видеть вставленные данные в таблицу. Ниже приведен мой кодНевозможно вставить данные формы в базу данных sql

SqlConnection con = 
    new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=F:\\Database1.mdf;Integrated Security=True"); 
con.Open(); 
SqlCommand cmd = 
    new SqlCommand("insert into tbl_insert values (" + Convert.ToInt32(txtId.Text) + "," + "'" + txtName.Text + "'" + "," + "'" + txtEmail.Text + "'" + "," + "'" + txtboxCity.Text + "'" + ")", con); 
cmd.ExecuteNonQuery(); 
con.Close(); 

Я приложил свои скриншоты к базе данных. дизайн База данных:

enter image description here

Это вывод я получаю после того, как работает мой код. Выход со значением нуль сохраняется:

enter image description here

+0

Вы получаете любую ошибку при выполнении этой запрос? –

+0

Я не слишком уверен в проблеме, с которой вы столкнулись, но просто хотел, чтобы вы набросились на https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter(v = vs.110) .aspx Код, который вы написали, очень восприимчив к SQL-инъекции, поэтому я бы определенно рекомендовал добавить SqlParameter, если этот проект будет больше, чем просто практикой/потехой. – Ben

+0

@ un-lucky iam не получает ошибок при запуске этого программа –

ответ

1

Попробуйте

con.Open(); 
SqlCommand cmd = new SqlCommand(@"insert into tbl_insert values(@name,@email,@add)", con); 
cmd.Parameters.AddWithValue("@name", txtname.Text); 
cmd.Parameters.AddWithValue("@email", txtemail.Text); 
cmd.Parameters.AddWithValue("@add", txtadd.Text); 
cmd.ExecuteNonQuery(); 
con.Close(); 

я подозреваю, что колонка id находится в автоматическом Количество

если не просто добавить еще один параметр в запросе и cmd.Parameters

+0

Если столбец 'id' является Identity, он должен дать ошибку, но он уже упомянул: * я не встречаю никаких ошибок или исключений *. –

+0

такая же проблема продолжалась ... ошибка отладки ошибок показала, что данные добавлены правильно, но она не отображается в таблице –

3

Вы должны всегда использовать parameterized queries, чтобы избежать SQL Injection и получить RID, из цитаты проблем:

SqlCommand cmd = new SqlCommand("insert into tbl_insert values (@id,@name,@Email,@City)"); 
cmd.Parameters.AddWithValue("@id", Convert.ToInt32(txtId.Text)); 
cmd.Parameters.AddWithValue("@name", txtName.Text); 
cmd.Parameters.AddWithValue("@Email", txtEmail.Text); 
cmd.Parameters.AddWithValue("@City", txtboxCity.Text); 

Хотя указать тип непосредственно и использовать Value свойство более не более AddWithValue:

cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = txtName.Text; 

Can we stop using AddWithValue() already?

Смежные вопросы