Witam!
Potrzebuję napisać program obsługujący bibliotekę. Oparty będzie na bazie w MS Access. Przy próbie dodania rekordu do bazy za pomocą aplikacji otrzymuję komunikat “Operacja musi wykorzystywać kwerendę, którą można aktualizować.” Kiedy próbuję zrobić to samo bezpośrednio z access’a nie ma problemu.
Łańcuch połączenia do bazy wygląda tak:
public static string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\baza_biblioteki.mdb;";
zapytanie insert tak:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.OleDb;
namespace biblioteka
{
class db_queries
{
public static string query_dodaj_ksiazke = "insert into books (id_book, title, author, release_date, publishing_house, book_type) values (@id_book, @title, @author, @release_date, @publishing_house, @book_type)";
}
}
a wywołanie tego wszystkiego tak:
private void bAddBook_Click(object sender, EventArgs e)
{
string cs = utils.connectionString;
OleDbConnection connection = new OleDbConnection(cs);
connection.Open();
string dodaj_ksiazke = db_queries.query_dodaj_ksiazke;
OleDbCommand cmd_dodaj_ksiazke = new OleDbCommand(dodaj_ksiazke, connection);
cmd_dodaj_ksiazke.Parameters.AddWithValue("id_book", tbIdentyfikator.Text);
cmd_dodaj_ksiazke.Parameters.AddWithValue("title", tbTytul.Text);
cmd_dodaj_ksiazke.Parameters.AddWithValue("author", tbAutor.Text);
cmd_dodaj_ksiazke.Parameters.AddWithValue("release_date",dtpDataWydania.Text);
cmd_dodaj_ksiazke.Parameters.AddWithValue("publishing_house", tbWydawnictwo.Text);
cmd_dodaj_ksiazke.Parameters.AddWithValue("book_type", cbRodzaj.Text);
cmd_dodaj_ksiazke.ExecuteScalar();
connection.Close();
}
Proszę o informację co robię nie tak. Wcześniej (kilka miesięcy temu) też pisałem małą aplikację opartą o access’a i nie było tego typu problemu.
Z góry dziękuję za pomoc.
Pozdrawiam
Adam