Nisam siguran zašto ne radi, možda zato što je ponoć odavno prošla :)
Inače kod Accessa ime parametra je ? i bitan je redosled kojim ih navodiš. Kod SQL kolko se sećam nije bitan raspored, i možeš im davati imena kao što sam i ja u primeru. I u Accessu možeš davati imena "@ID"... ali to neće imati efekta.
Znači kod Accessa ide ovako:
komanda.CommandText = "INSERT INTO Osoba(ID,Ime,Prezime) VALUES (?,?,?) ";
Evo da objasnim kompletan primer.
U Bazi podataka imaš recimo tabelu koja se zove Osoba, i polja ID, Ime, Prezime. ID je Number i to je primarni ključ, Ime i Prezime su text.
Na formi imaš 3 textboxa i jedno dugme. Baza se nalazi na c:\Database1.mdb. Ovaj kod, kod mene radi.
Code:
OleDbConnection konekcija = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\Database1.mdb");
OleDbCommand komanda = konekcija.CreateCommand();
komanda.Parameters.AddWithValue("@ID", textBox1.Text);
komanda.Parameters.AddWithValue("@Ime", textBox2.Text);
komanda.Parameters.AddWithValue("@Prezime", textBox3.Text);
komanda.CommandText = "INSERT INTO Osoba(ID,Ime,Prezime) VALUES (@ID,@Ime,@Prezime) ";
try
{ //ukoliko dodje do greske, program se nece srusiti
komanda.Connection.Open();
komanda.ExecuteNonQuery();
}
catch
{
//ovde se moze napisati koja je greska
}
finally
{
komanda.Connection.Close();
}