Вероятно, это жалоба, потому что вы не цитируете ни одно из значений.Тем не менее, вы все равно не должны включать значения непосредственно в SQL - вы должны использовать параметризованный оператор.Таким образом:
- Вы отделяете код от данных, что всегда хорошо.
- Вы избегаете атак с использованием SQL-инъекций.
- Вам не нужно беспокоитьсяо форматах конверсии для таких вещей, как даты и числа.
См. документацию по OleDbCommand.Parameters
для полного примера.Ваш код, вероятно, станет что-то вроде:
private void addRow_Click(object sender, EventArgs e)
{
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=C:\\Projects_2012\\Project_Noam\\Access\\myProject.accdb";
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
string sql = "insert into tblCodons(codonsCodon1, codonsCodon3, " +
"codonsTriplet1, codonsTriplet2, codonsTriplet3, codonsTriplet4, " +
"codonsTriplet5, codonsTriplet6, codonsFullName" +
") values (?, ?, ?, ?, ?, ?, ?, ?, ?)";
using (OleDbCommand command = new OleDbCommand(sql, connection))
{
connection.Open();
command.Parameters.AddWithValue("codon1", codon1.Text);
command.Parameters.AddWithValue("codon3", codon3.Text);
command.Parameters.AddWithValue("triplet1", triplet1.Text);
command.Parameters.AddWithValue("triplet2", triplet2.Text);
command.Parameters.AddWithValue("triplet3", triplet3.Text);
command.Parameters.AddWithValue("triplet4", triplet4.Text);
command.Parameters.AddWithValue("triplet5", triplet5.Text);
command.Parameters.AddWithValue("triplet6", triplet6.Text);
command.Parameters.AddWithValue("fullName", fullName.Text);
command.ExecuteNonQuery();
}
}
}