Выполнение запроса DML из таблицы данных в SSCE
Что я пытаюсь сделать:
Выполнить операторы DML в базе данных (SSCE
) с помощью Datagridview
и кнопки управления.
Эта проблема:
Я получаю точно такую же ошибку, как этот пост: SQL [Ошибка]: Произошла ошибка при разборе запроса. [Номер строки токена = 1, смещение строки токена = 44, ошибка токена = - ]
Основываясь на этих и других ответах, доступных в Интернете, я проверил строку запроса, но не смог ее решить. Есть и еще один аспект, у меня есть сомнения.
private void button2_Click(object sender, EventArgs e)
{
using (SqlCeConnection CONN = new SqlCeConnection("Data
Source=LocalDBSSCompactEdition.sdf;"))
{
SqlCeCommand comm = new SqlCeCommand();
comm.Connection = CONN;
CONN.Open();
int i = dataGridView2.Rows.Count-1;
String queryString = @"INSERT INTO tblEmployee VALUES ("
+ dataGridView2.Rows[i].Cells["E_ID"].Value + ", "
+ dataGridView2.Rows[i].Cells["FirstName"].Value + ", "
+ dataGridView2.Rows[i].Cells["LastName"].Value + ", "
+ dataGridView2.Rows[i].Cells["DeptID"].Value + ");";
comm.CommandText = queryString;
comm.ExecuteNonQuery();
}
}
1) E_ID
столбец IDENTITY
(автоматическое приращение). Однако я получил ошибку, сказав, что я должен включить все столбцы в DataGridview, чтобы соответствовать таблице базы данных. Может ли это быть проблема, которую я получаю, или это может быть мой синтаксис?
2) Я хочу вставить новые строки / обновления / удаленные строки из Datagridview в таблицу базы данных, используя событие нажатия кнопки. Это эффективный способ сделать это?
Некоторые идеи в правильном направлении приветствуются.
1 ответ
Мне удалось решить это. Я не верю в ответ на свой вопрос. Просто добавил ответ, надеясь на чью-либо ссылку в будущем.
1) i
переменная ссылалась на пустую строку в datagridview
... Следовательно, значения для вставки были нулевыми, и эти столбцы указаны NOT NULL
...
2) Первым правилом было следовать обычному INSERT
оператор, когда столбец идентификатора имеет автоинкремент. Поэтому я указываю столбцы, для которых я хочу вставить данные.
3) Данные, которые я вводил, не были указаны как String
, Исправлена.
private void button2_Click(object sender, EventArgs e)
{
using (SqlCeConnection CONN = new SqlCeConnection("Data Source=LocalDBSSCompactEdition.sdf;"))
{
CONN.Open();
SqlCeCommand comm = CONN.CreateCommand();
int i = dataGridView2.Rows.Count-1;
String queryString = @"INSERT INTO tblEmployee (FirstName, LastName, DeptID) VALUES ('"
+ dataGridView2.Rows[5].Cells["FirstName"].Value + "','"
+ dataGridView2.Rows[5].Cells["LastName"].Value + "',"
+ dataGridView2.Rows[5].Cells["DeptID"].Value + ");";
comm.CommandText = queryString;
comm.ExecuteNonQuery();
CONN.Close();
}
}