[英]MS Access DB doesnt save changes after execution (C#)
我有以下用於使用訪問數據庫的代碼
OleDbConnection con = new OleDbConnection(myproject.Properties.Settings.Default.myDBConnectionString);
con.Open();
OleDbCommand command = new OleDbCommand("INSERT INTO components (name) VALUES (@p_col1)", con);
command.Parameters.Add("@p_col1", OleDbType.VarChar).Value = "test row";
int rows = command.ExecuteNonQuery();
此時行值為1,當我在之后進行選擇查詢時,插入的行可用。 當程序結束時出現問題:在進一步的執行中,行不再存在。
我試過交易
OleDbTransaction transaction = con.BeginTransaction();
command.Transaction = transaction;
transaction.Commit();
並以這種方式使用DataSet和ADO
//... add row to dataset ...
OleDbDataAdapter sda = new OleDbDataAdapter("select * from components", con);
OleDbCommandBuilder cb = new OleDbCommandBuilder(sda);
sda.Update(ds.Components); //tried with ds.Components.AcceptChanges(); before and after this line
但在每種情況下我都有相同的問題,似乎插入查詢不是在真正的數據庫中完成。 你知道為什么會這樣嗎???
提前致謝
數據庫是否在bin目錄中? 它也是你項目的一部分嗎? 我已經看到這種情況發生在每次構建時都會用項目目錄中的數據庫覆蓋bin目錄中的數據庫,因此看起來沒有保存。
MS Visual Studio將Access DB構建到產品中。 ---產品位於bin目錄中。 ---要通過應用程序查看對數據庫的任何和所有更改,請使用此項當您最初將數據庫添加到項目時,它將設置為始終在構建時更新產品。 這可能是一件好事,但我覺得它很煩人。 為了解決這個問題:從解決方案資源管理器中選擇MS Access DB,按F4轉到它的屬性,將“復制到輸出目錄”字段更改為“如果更新則復制”而不是“始終”。
可能有多個數據庫,您沒有插入您認為要插入的數據庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.