С бита, я бы поменял
MessageBox.Show("Error " + ex);
до
MessageBox.Show("Error " + ex.Message);
Это даст вам лучшее понимание ошибки
Кроме того, очень полезно использовать параметры, это предотвращает проблемы с одинарными кавычками и предотвращает проблемы с внедрением sql:
try
{
OleDbConnection connection = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = F:\Database\DBAdatabase.accdb; Persist Security Info = False; ");
OleDbCommand command = new OleDbCommand("", connection);
for (int s = 0; s < dataGridView1.Rows.Count - 1; s++)
{
command.Parameters.AddWithValue("@position",dataGridView1.Rows[s].Cells[0].Value);
command.Parameters.AddWithValue("@lvPosition",dataGridView1.Rows[s].Cells[1].Value);
command.CommandText = "INSERT INTO Quotations (Position, LVPosition) VALUES (@position, @lvPosition)";
connection.Open();
//this line is not needed as it is set in the command constructor above
//command.Connection = connection;
command.ExecuteNonQuery();
MessageBox.Show("Data Saved");
connection.Close();
//edit - this needs to run or you will have duplicate values inserted
command.Parameters.Clear();
}
}
catch (Exception ex)
{
MessageBox.Show("Error " + ex.Message);
}
Даже в этом случае я бы серьезно изучил использование операторов для соединения и команды и попытался бы открыть соединение. Но это становится немного не по теме