Mi código era:
private void AddDato(string No, string ID, string Tittle, ref OleDbConnection cnn)
{
OleDbCommand cmd = new OleDbCommand(
{
OleDbCommand cmd = new OleDbCommand(
"INSERT INTO miTabla (No, un_ID, Tittle) VALUES(@Num, @uID, @nTittle)", cnn);
cmd.Parameters.AddWithValue("@Num", Convert.ToInt32(No));
cmd.Parameters.AddWithValue("@uID", ID);
cmd.Parameters.AddWithValue("@nTittle", Tittle);
cnn.Open();
cmd.ExecuteNonQuery();
cmd.Dispose();
cnn.Close();
}
}
cmd.Parameters.AddWithValue("@Num", Convert.ToInt32(No));
cmd.Parameters.AddWithValue("@uID", ID);
cmd.Parameters.AddWithValue("@nTittle", Tittle);
cnn.Open();
cmd.ExecuteNonQuery();
cmd.Dispose();
cnn.Close();
}
}
Y a pesar de estar todo bien, siempre me tiraba una excepción que decía "Syntaxis Error en Insert Into", o cualquier cosa parecida, en la línea cmd.ExecuteNonQuery().
Después de horas depurando y leyendo foros, encontré por ahí un tip clave:
A las bases de datos en Access no les gustan los campos con nombres como "Date", "login" o "Password".
Entonces el error no estaba en mi Insert Into, si no, posiblemente, en los nombres de mis campos.
Hice una pequeña modificación al código (no a la base de datos) y el problema se resolvió maravillosamente:
private void AddDato(string No, string ID, string Tittle, ref OleDbConnection cnn)
{
OleDbCommand cmd = new OleDbCommand(
{
OleDbCommand cmd = new OleDbCommand(
"INSERT INTO miTabla ([No], [un_ID], [Tittle]) VALUES(@Num, @uID, @nTittle)", cnn);
cmd.Parameters.AddWithValue("@Num", Convert.ToInt32(No));
cmd.Parameters.AddWithValue("@uID", ID);
cmd.Parameters.AddWithValue("@nTittle", Tittle);
cnn.Open();
cmd.ExecuteNonQuery();
cmd.Dispose();
cnn.Close();
}
}
cmd.Parameters.AddWithValue("@Num", Convert.ToInt32(No));
cmd.Parameters.AddWithValue("@uID", ID);
cmd.Parameters.AddWithValue("@nTittle", Tittle);
cnn.Open();
cmd.ExecuteNonQuery();
cmd.Dispose();
cnn.Close();
}
}
Dejo como tarea hallar el cambio que hice :)