Avatar billede asol Nybegynder
30. januar 2005 - 10:55 Der er 2 kommentarer og
1 løsning

Opdatere database vha. OleDbDataAdapter

Hejsa

Jeg har lavet nogle rettelser i data i et datagrid, der er bundet til et dataset og vil gerne have ført rettelserne tilbage til databasen.

På min form har jeg et datagrid og to knapper. Jeg kan godt få vist data i datagriddet, men jeg kan ikke få det opdaterede tilbage til databasen. Nedenfor er vist koden for de to knapper, der henter data og skal gemme de opdaterede data i databasen.

I knappen gemBtn skal jeg på en eller anden på have fat i det dataset datagriddet anvender for at kunne opdatere. Hvordan?

private void hentBtn_Click(object sender, System.EventArgs e)
{
    //sqlstreng, forbindelse til db og dataadapter
    string sqlstreng = "SELECT * FROM personer";
    OleDbConnection dbForbindelse = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb");
    OleDbDataAdapter da = new OleDbDataAdapter(sqlstreng,dbForbindelse);
    DataSet ds = new DataSet();
    da.Fill(ds,"personer");
    personOversigtGrid.SetDataBinding(ds,"personer");
}

private void Gembtn_Click(object sender, System.EventArgs e)
{
    //sqlstreng, forbindelse til db og dataadapter
    string sqlstreng = "SELECT * FROM personer";
    OleDbConnection dbForbindelse = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb");
    OleDbDataAdapter da = new OleDbDataAdapter(sqlstreng,dbForbindelse);
   
    OleDbCommandBuilder cmdBuilder = new OleDbCommandBuilder(da);
    da.UpdateCommand = cmdBuilder.GetUpdateCommand();
    da.InsertCommand = cmdBuilder.GetInsertCommand();
    da.DeleteCommand = cmdBuilder.GetInsertCommand();
    da.Update(ds,"personer"); ????
}
Avatar billede arne_v Ekspert
30. januar 2005 - 11:13 #1
eksempel:

using System;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Windows.Forms;

namespace DefaultNamespace
{
    public class MainForm : Form
    {
        private DataGrid dg;
        private Button save;
        private OleDbConnection con;
        private OleDbDataAdapter da;
        private OleDbCommandBuilder cb;
        private DataSet ds;

        public static void Main()
        {
            MainForm fMainForm = new MainForm();
            fMainForm.ShowDialog();
        }

        public MainForm()
        {
            InitializeComponent();
        }

        private void InitializeComponent()
        {
            con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Database\\MSAccess\\Test.mdb;");
            con.Open();
            da = new OleDbDataAdapter("SELECT * FROM T1", con);
            cb = new OleDbCommandBuilder(da);
            da.UpdateCommand = cb.GetUpdateCommand();
            ds = new DataSet();
            da.Fill(ds, "T1");
            dg = new DataGrid();
            save = new Button();
            SuspendLayout();
            dg.Location = new Point(50, 50);
            dg.Size = new Size(300, 200);
            dg.SetDataBinding(ds, "T1");
            save.Location = new Point(50, 300);
            save.Size = new Size(100, 25);
            save.Text = "Save";
            save.Click += new EventHandler(SaveClick);
            ClientSize = new Size(400, 400);
            Controls.Add(dg);
            Controls.Add(save);
            Text = "Main Form";
            ResumeLayout(false);
        }

        void SaveClick(object sender, EventArgs e)
        {
            da.Update(ds, "T1");
            ds.AcceptChanges();
            dg.Refresh();
        }
    }
}
Avatar billede asol Nybegynder
30. januar 2005 - 14:15 #2
Tak! Smid et svar.
Avatar billede arne_v Ekspert
30. januar 2005 - 14:41 #3
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



Seneste spørgsmål Seneste aktivitet
I dag 20:46 opkaldside Af hagbartm i Mobiltelefoner
I dag 16:05 win 10 vil ikke boote Af bb69 i Windows
I dag 11:20 Lenovo x390 Af tobberjas i PC
I dag 10:14 Alder i Excel Af Nanarsi i Excel
I dag 09:00 Flere linier på faneblad Af Peder Lund Nielsen i Excel