簡體   English   中英

將更改保存到數據庫 C# ADO.NET

[英]save changes to database C# ADO.NET

    public EmployeeForm()
    {
        this.bindingSource = new BindingSource();

        this.Load += new EventHandler(EmployeeForm_Load);
    }

    private void EmployeeForm_FormClosing(object sender, FormClosingEventArgs e)
    {
        this.connection.Close();
        this.connection.Dispose();
    }     
    private void RetrieveDataFromTheDatabase()
    {
        
        string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"Employee.mdb\"";
        this.connection = new OleDbConnection(connectionString);

        this.connection.Open();

        OleDbCommand command = connection.CreateCommand();
        command.CommandText = "Select * From Employee";

        this.adapter = new OleDbDataAdapter();
        this.adapter.SelectCommand = command;

        this.dataset = new DataSet();
        this.adapter.Fill(dataset, "Employee");  
        
        OleDbCommandBuilder commandBuilder = new OleDbCommandBuilder(this.adapter);

        commandBuilder.ConflictOption = ConflictOption.OverwriteChanges;

        commandBuilder.GetInsertCommand();
        commandBuilder.GetDeleteCommand();
        commandBuilder.GetUpdateCommand();

    }        

    private void BindControls()
    {
        this.bindingSource.DataSource = this.dataset.Tables[0];
        this.dgvEmployee.DataSource = this.bindingSource;
    }

    void FileSave_Click(object sender, EventArgs e)
    {
        this.adapter.Update(this.dataset, "Employee");
        
        this.dgvEmployee.EndEdit();
        this.bindingSource.EndEdit();
    }

單擊保存按鈕時,我想將所有數據更改保存到數據庫中。 我擁有的代碼不會對數據庫進行更改。 我還想在成功保存后禁用保存按鈕。

您可以讓 visual studio 為您編寫所有這些代碼,包括保存內容:

  • 確保你在 .net 框架項目中工作 - 核心+中的這個過程有錯誤,部分 VS 被微軟故意禁用
  • 將 DataSet 類型的文件添加到您的項目
  • 打開它,右鍵單擊表面,添加..表適配器
  • Go 通過向導連接你的access數據庫。 當出現一個包含文本“按 f1 以獲取有關控制此行為的信息”的大消息框時,請完整閱讀並理解它。 它的意思是“如果您將數據庫復制到您的項目中,它將在您運行時再次復制到調試文件夾中。該應用程序將更改 bin/debug 文件夾中的數據庫,並且數據庫將被新副本覆蓋下次通過構建過程。這會讓你的數據看起來沒有保存;那不是真的”
  • 選擇“選擇返回行”
  • 輸入SELECT * FROM Employee WHERE id = @id
  • 選擇名稱 FillById/GetDataById
  • 完成向導
  • 右鍵單擊表適配器,選擇添加查詢,添加另一個查詢SELECT * FROM Employee WHERE Name LIKE @name或類似的 - 添加讓您 select 只是某些員工的查詢是個好主意,並進行您想要的搜索在應用程序中執行。 “按名稱搜索”是我認為的合理要求。 當要求為此查詢輸入名稱時,請輸入 FillByName/GetDataByName
  • 保存數據集,切換到表單設計器
  • 打開數據源 window(在 View 菜單上.. Other Windows)並將代表 Employee 表的節點拖到窗體上
  • 出現了幾件事; 一個導航欄,帶有一個用於輸入 id 的框、一個數據集、一個數據網格、一個綁定源等。無需您編寫一行代碼,所有這些都可以連接在一起。 所有代碼都在 Form1.Designer.cs 和 Form1.cs(或任何你稱呼你的表單)中,並且與你寫的相似
  • 運行應用程序,在框中輸入已知的員工 ID,然后單擊 fillbyid。 該員工出現在網格中。 編輯他們的名字,點擊導航欄中的保存。 打開 bin/debug 文件夾中的數據庫文件並查看更改后的名稱
  • go 到 Form1 的代碼視圖並將 FillById 調用更改為 FillByName 並刪除對 TextBox 內容的 integer 的轉換。 現在您可以按姓名搜索員工,甚至可以搜索名稱 % 以列出所有員工,因為它是一個 LIKE 操作

查看代碼是如何連接的; 這一切都很簡單。 您可以向數據集甚至關系中添加更多表,您可以通過將子節點(不是頂級節點)拖出數據源來顯示相關數據

如果您對構建過程一直覆蓋您的調試數據庫感到厭倦,請在解決方案資源管理器中單擊它,並將復制選項從“始終復制”更改為“如果更新則復制”。 現在只有當您對項目文件夾中的數據庫進行架構更改(添加表等)時,它才會被復制

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM