Выполнение запроса 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();    
            }
        }
Другие вопросы по тегам