2016-03-05 1 views
0

Я создаю оконное приложение, и я выбрал базу данных в меню «Новый элемент». Моя вставка запроса ниже не выполняется:Вставить запрос не работает должным образом в окне C#

con.Open(); 
cmd = new SqlCommand("insert into record values('" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','" + textBox7.Text + "','" + textBox8.Text + "','" + textBox9.Text + "','" + textBox10.Text + "','" + textBox11.Text + "','"+textBox13.Text+"','"+textBox12.Text+"')", con); 
cmd.ExecuteNonQuery(); 
con.Close(); 
+2

Какая ошибка (ы) вы возвращаетесь? Вы проверили, что ваша конкатенация строк создает то, что вы думаете? Вы скопировали эту строку в SQLSMS и выполнили ее напрямую, чтобы убедиться, что она работает? – ChrisF

+0

[SQL Injection alert] (http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - вы должны ** не ** объединить свои SQL-заявления - использовать ** параметризованные запросы ** вместо того, чтобы избежать SQL-инъекции –

ответ

0

В Sql, когда ваш Вставить запрос не содержит имена столбцов, то значения должны быть в правильном порядке. Возможно, именно поэтому он терпит неудачу. Вы не предоставили нам ошибку, поэтому я не знаю.

Вы пытаетесь это:

INSERT INTO table_name 
VALUES (value1,value2,value3,...); 

Я предлагаю попробовать это:

INSERT INTO table_name (column1,column2,column3,...) 
VALUES (value1,value2,value3,...); 
+0

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

+0

означает, что файл базы данных не будет обновляться –

+0

, если вы используете транзакцию Db, тогда вы должны зафиксировать транзакцию. –

0

Если вы можете, вы должны использовать параметры и включить ваши имена столбцов (например, как Андреас предложил). Примером может служить ...

cmd = new SqlCommand("INSERT INTO record (column1, column2, column3,...) 
VALUES (@data1, @data2, @data3,...)", con); 
cmd.Parameters.AddWithValue("@data1", textbox2.Text); 
cmd.Parameters.AddWithValue("@data2", textbox3.Text); 
cmd.Parameters.AddWithValue("@data3", textbox4.Text); 
cmd.Parameters.AddWithValue("...", ...); 

con.Open(); 
cmd.ExecuteNonQuery(); 
con.Close(); 
+0

. Проблема с Actully заключается в том, что когда моя программа находится в рабочем режиме в это время, ее работа означает, что данные вставляются, но когда i Показывать данные таблицы нет данных. –

+0

@Gauravshukla Где вы пытаетесь показать данные? В форме окна или в программе типа менеджера? – CodyMR