Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[ADO.NET/VB.NET] Update record in Access

Pagina: 1
Acties:
  • 521 views sinds 30-01-2008

Verwijderd

Topicstarter
Hoi,

[ Voor 99% gewijzigd door Verwijderd op 28-11-2007 23:24 ]


  • ProGo
  • Registratie: Januari 2000
  • Laatst online: 29-11 12:34
Als je alle updates wil doorvoeren in de database kun je het beste alle gegevens in een dataset/datatable inlezen d.m.v. een dataadapter en daarna de update methode aanroepen van de adapter om alle wijzigingen door te voeren in de db.

Voorbeeldje uit de onmisbare MSDN
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
static private DataSet CreateCommandAndUpdate(
    string connectionString,
    string queryString)
{
    DataSet dataSet = new DataSet();

    using (OleDbConnection connection =
               new OleDbConnection(connectionString))
    {
        connection.Open();
        OleDbDataAdapter adapter =
            new OleDbDataAdapter();
        adapter.SelectCommand =
            new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder =
            new OleDbCommandBuilder(adapter);

        adapter.Fill(dataSet);

        // Code to modify data in the DataSet here.

        // Without the OleDbCommandBuilder, this line would fail.
        adapter.UpdateCommand = builder.GetUpdateCommand();
        adapter.Update(dataSet);
    }
    return dataSet;
}

  • Cascade
  • Registratie: Augustus 2006
  • Laatst online: 25-11 00:51
Weet je wel heel erg zeker dat dit niet in een les is behandeld?

Om het simpel te zeggen: gebruik het 'id' veld in je tabel. Dit is een (meestal numeriek) veld in de tabel dat zich automatisch ophoogt bij het aanmaken van een nieuwe record (insert). Elk record heeft zo een unieke waarde in dit veld. In Access wordt die automatisch aangemaakt als 'primary key'. Via dit veld is heel efficient het record weer terug te vinden, dit gebruik je dan ook bij voorkeur in je queries.

Voor een SELECT / UPDATE:
1. zoek het record met je keywords -> zorg dat je ook het 'record id' terugkrijgt.
SELECT id, naam FROM adressen WHERE blablabla.
2. bij een UPDATE gebruik je deze record id in je WHERE.
UPDATE adressen SET naam='blabla' WHERE id=id_van_bestaand_record

Voor een nieuw record:
1. INSERT INTO adressen SET (naam) VALUES ('bla');
2. record id wordt automatisch ingevuld en kan je opvragen via ADO.NET. -> bewaar dat bijvoorbeeld in je .NET ViewState voor de update.

Met alle respect, heb je niet gewoon een boek waar dit in staat? En...is het doel hier om specifiek ADO.NET te leren of alleen SQL? Indien ADO, kijk dan eens naar de DataSet en OleDbDataAdapter classes zoals ProGo al aangaf. Die dingen zijn er om te gebruiken en nemen een stuk werk uit handen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 29-11 22:54
Mag ik je even wijzen op het gebruik van code-tags, dat maakt je code heel wat leesbaarder.

Verder:
Wat is je probleem precies ? Weet je niet hoe je die query moet uitvoeren in je VB.NET programma ?
Indien het dat is: heb je eigenlijk al eens je cursus doorbladert, en indien het er echt niet in staat (wat me zou verbazen), heb je dan al eens gelijk welk boek / tutorial over ADO.NET bekeken ? Dit is nl. basic - kennis dat je daar zeker in terugvind.
Het voorbeeldje van Progo toont je hoe je die update query kunt uitvoeren voor alle gewijzigde rows in een datatable, maar als je dat niet wilt, kan je eens kijken naar het OleDbCommand, de CommandText property van dat object, en de ExecuteNonSql method.

Verder raad ik je ook aan om eens naar parametrized queries te kijken.

Je SQL Statement klopt ook niet, je zit daar met komma's in je WHERE clausule te werken, terwijl je met logische operators moet werken.
Het is ook onzinnig om alle velden te gaan vergelijken (ok, 't werkt wel, en het is een manier om met concurrency om te gaan, maar het is beter als je gewoon de primary key van het record gebruikt dat je wilt updaten + nog een extra check op een version / timestamp veld bv.

[ Voor 19% gewijzigd door whoami op 28-11-2007 23:25 ]

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 29-11 22:54
Nou, als de vraag weg is, dan heeft dit topic ook niet veel zin meer ....

[ Voor 39% gewijzigd door whoami op 28-11-2007 23:40 ]

https://fgheysels.github.io/


Dit topic is gesloten.