Dodawanie rekordów C# i baza w msaccess

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

Może nie masz z aplikacji prawa zapisu do pliku? Albo plik ma atrybut read only? Poza tym nie mam pewności, czy możesz do dowolnej kolumny wstawiać zmienną tekstową. (tzn. w MSSQL miałbyś problem, może Access jest mniej restrykcyjny, ale wątpię w to). Jeśli np. id_book to int, to AddWithValue ze stringiem może nie działać.

id_book w tym przypadku to identyfikator książki nadawany ręcznie i może zawierać dowolny ciąg znaków, więc typ tekstowy jak najbardziej tu pasuje.

Nadal jednak nie wiem w czym tkwi problem. Sprawdzałem uprawnienia na pliku i na poszczególnych tabelach i do wszystkiego mam pełen dostęp.

EDIT:

Problem rozwiązany. Plik .mdb zapisany był na dysku C. Wystarczyło przenieść na inny (np. E) i pomogło. Jednak kwestia uprawnień…