[英]Datagridview not saving changes to Database
Datagridview 不保存對數據庫的更改。
只是在表單中,而不是數據庫中。
我已經檢查了數據庫屬性和Copy to output Directory
設置為cope if newer
。
這是我的代碼:
public partial class ClientsManager : Form
{
public ClientsManager()
{
InitializeComponent();
}
private void clientsBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
try
{
this.Validate();
this.clientsBindingSource.EndEdit();
//this.tableAdapterManager.UpdateAll(this.databaseDataSet);
this.clientsTableAdapter.Update(this.databaseDataSet.Clients);
MessageBox.Show("Changes has been Saved!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void ClientsManager_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'databaseDataSet.Clients' table. You can move, or remove it, as needed.
this.clientsTableAdapter.Fill(this.databaseDataSet.Clients);
}
到目前為止,我讀過的大多數解決方案都是關於EndEdit()
和Update()
.. 我的代碼中有這個,但仍然無法正常工作。
您可以創建一個名為 SAVE 的新按鈕並將以下代碼放入其中。
yourdatadapatername.update(yourdatatablenamehere)
希望這有幫助。
我在這個答案中找到了解決方案:
這是一個很常見的問題。 您使用 |DataDirectory| 替換字符串。 這意味着,在 Visual Studio 環境中調試應用程序時,應用程序使用的數據庫位於項目的子文件夾 BIN\\DEBUG 文件夾(或 x86 變體)中。 這很有效,因為您沒有任何類型的連接到數據庫和進行更新操作的錯誤。
但是,您退出調試會話並通過 Visual Studio Server Explorer 查看您的數據庫。 此窗口具有不同的連接字符串(可能指向項目文件夾中的數據庫副本)。 您搜索您的表格,但您看不到更改。
然后問題變得更糟。 如果您在項目文件之間列出了數據庫文件,並且屬性復制到輸出目錄設置為始終復制,則每次重新啟動調試會話時,原始數據庫文件都會從項目文件夾復制到輸出文件夾 (BIN \\DEBUG),因此您之前的更改將丟失。 現在,您的應用程序也看不到之前所做的更改。
您可以停止此問題,將屬性復制到輸出目錄更改為如果較新或從不復制則復制。 您還可以在服務器資源管理器中更新連接字符串以查看數據庫的工作副本或創建第二個連接。 第一個仍然指向項目文件夾中的數據庫,而第二個指向 BIN\\DEBUG 文件夾中的數據庫。 通過這種方式,您可以保持原始數據庫為部署目的和模式更改做好准備,同時,通過第二個連接,您可以查看編碼工作的有效結果。
編輯 MS-Access 數據庫用戶的特別警告。 如果您不編寫或更改任何內容,那么查看表的簡單操作也會更改數據庫的修改日期。 因此,Copy if Newer 標志啟動並將數據庫文件復制到輸出目錄。 使用 Access 更好地使用 Copy Never。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.