У вас есть опечатка в тексте sql.Перед запятой стоит запятая.Но есть также ошибка, вызванная использованием зарезервированного ключевого слова в MS-Access (Group).Вам нужно заключить квадратные скобки вокруг этого имени.
Наконец, не используйте конкатенацию строк для построения команд sql, но всегда используйте параметры.
Это позволяет избежать взломов sql-инъекций и устранить проблему с анализом ваших входных данных (например,если во входном тексте есть одинарная кавычка, весь запрос снова не будет выполнен с синтаксической ошибкой)
private void btn_save_Click(object sender, EventArgs e)
{
try
{
using(OleDbConnection connection = new OleDbConnection(....con string...))
{
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
// Notice how Group field is between square brackets.
// If you can I suggest to change the name of this field
string cmdText = @"insert into GRL1 (NoBoard,Site,[Group],Kind,Unit)
values (@nob, @sit, @grp, @knd, @uni)";
command.CommandText = cmdText;
// Is NoBoard an integer? If yes you should pass an integer not a string
command.Parameters.Add("@nob", OleDbType.Integer).Value = Convert.ToInt32(txt_noboard.Text);
command.Parameters.Add("@sit", OleDbType.VarWChar).Value = txt_site.Text;
command.Parameters.Add("@grp", OleDbType.VarWChar).Value = txt_group.Text;
command.Parameters.Add("@knd", OleDbType.VarWChar).Value = txt_kind.Text;
command.Parameters.Add("@uni", OleDbType.VarWChar).Value = txt_unit.Text;
command.ExecuteNonQuery();
MessageBox.Show("Data Saved");
}
}
catch (Exception ex)
{
MessageBox.Show("Error " + ex);
}
}
Коллекция параметров заполняется значениями, необходимыми для текста вашего запроса.Обратите внимание, что я не знаю точно тип данных ваших столбцов в базе данных.Параметр OleDbType должен точно соответствовать ожидаемым типам, чтобы избежать исключений несоответствия типов
Последний совет.Соединения должны быть созданы, открыты и закрыты при необходимости.Не сохраняйте глобальный объект соединения.Вы не получаете большого прироста производительности, потому что ADO.NET использует технику, называемую Connection Pooling