2017-07-26 4 views
0

次の問題があります。新しいレコードをAccessデータベースに挿入しようとすると「更新可能なクエリを使用する必要があります。アクセス新しいレコードを挿入しようとすると「更新可能なクエリを使用する必要があります」

コードは次のとおりです。書かれたよう

OleDbConnection Conn = new 
OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data 
Source=Checkbook.accdb;"); 
string SQL = "Insert into Category (CategoryDescription) values('Pizza')" 
OpenDatabase(); //This does a Conn.Open(); 
OleDbCommand myAccessCommand = new OleDbCommand(SQL, Conn); 
myAccessCommand.ExecuteNonQuery(); 
CloseDatabase(); 
+0

[カテゴリ]がテーブルであり、保存されたクエリではないとすると、コードを実行しているプロセスのように聞こえても、データベースファイルへの読み取りアクセスのみがあるとします。そのファイル*とそのフォルダが存在するフォルダのアクセス権を確認して、コードを実行しているアカウントにファイルとフォルダの両方に書き込み権限があることを確認します。 (Accessデータベースエンジンが.laccdbロックファイルを作成できるように、フォルダへの書き込みアクセスが必要です) –

+0

ファイルとフォルダに必要な書き込み権限があります。それはまだ起こっている。 – user1275351

+0

'Category'テーブルには、自動番号ではなく、ヌルを許可しないその他のフィールドがありますか?また、 'values'の後にスペースが必要です。 – SunKnight0

答えて

0

あなたのコードが正常に動作する必要があります。開いているメソッドと閉じているメソッドにコードがないと仮定すると、珍しいことはありません。表示されるエラーは、ファイルシステム上でのみ読み取るようにファイルを設定することで簡単に再現できます。プロパティウィンドウで確認できます。あなたは、読み取り専用チェックボックスがチェックされて表示された場合

Read Only Database

あなたは、Windowsエクスプローラでファイルのプロパティで、それを削除することができます。

ここでは読み取り専用に設定されているファイルが表示されず、適切なファイルアクセス権がある場合は、ファイルをロックしているものがあるかどうかを確認してください。これをテストするには、新しいアクセスデータベースを作成し、テーブルを再作成し、コードをテストデータベースに向けます。同じエラーが発生すると、マシンにグローバルな問題があることがわかります。同じ問題がない場合は、元のデータベースに問題がある可能性があります。

関連する問題