Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (Deutsch) » UltraLite - .NET-Programmierung » Praktische Einführung: Erstellen einer Windows Mobile-Anwendung unter Verwendung von UltraLite.NET

 

Lektion 4: Einfügen, Aktualisieren und Löschen von Daten

In dieser Lektion fügen Sie Ihrer Anwendung Code hinzu, der Dynamic SQL zum Ändern der Daten in Ihrer Datenbank verwendet.

Voraussetzungen

In dieser Lektion wird davon ausgegangen, dass Sie bereits alle vorherigen Lektionen abgeschlossen haben. Siehe Lektion 1: Erstellen eines Visual Studio-Projekts.

Kontext und Bemerkungen

In dieser Lektion erstellen Sie eine unterstützende Methode für die Verwaltung des Listenfelds. Diese Methode ist für die Datenmanipulationsmethode erforderlich, die in den später beschriebenen Verfahren verwendet wird.

 Aufgabe
  1. Rechtsklicken Sie auf das Formular und klicken Sie auf Code anzeigen.

  2. Fügen Sie eine Methode der Form1-Klasse hinzu, mit der das Listenfeld aktualisiert und Daten in das Listenfeld geladen werden. Diese Methode führt die folgenden Aufgaben aus:

    • Sie löscht das Listenfeld.

    • Sie instanziert ein ULCommand-Objekt und weist es einer SELECT-Abfrage zu, die Daten aus der Tabelle "Namen" in der Datenbank ausgibt.

    • Sie führt eine Abfrage aus und gibt eine Ergebnismenge als ULDataReader zurück.

    • Sie instanziert ein Ganzzahl-Array, dessen Länge der Anzahl der Zeilen in der Ergebnismenge entspricht.

    • Sie lädt die in ULDataReader zurückgegebenen Namen in das Listenfeld und die in ULDataReader zurückgegebenen IDs in das Ganzzahl-Array.

    • Sie schließt ULDataReader.

    • Sie gibt eine Fehlermeldung aus, falls ein Fehler auftritt. Bei SQL-Fehlern wird auch der Fehlercode ausgegeben.

    Bei einem C#-Projekt fügen Sie Ihrer Anwendung den folgenden Code als eine Methode der Form1-Klasse hinzu.



    //Visual C#
    private void RefreshListBox(){
        try{
            long NumRows;
            int I = 0;
            lbNames.Items.Clear();
            using( ULCommand cmd = Conn.CreateCommand() ){
                cmd.CommandText = "SELECT ID, Name FROM Names";
                using( ULDataReader dr = cmd.ExecuteReader()){
                    dr.MoveBeforeFirst();
                    NumRows = dr.RowCount;
                    ids = new int[ NumRows ];
                    while (dr.MoveNext())
                    {
                        lbNames.Items.Add(
                        dr.GetString(1));
                        ids[ I ] = dr.GetInt32(0);
                        I++;
                    }
                }
                txtName.Text = " ";   
            }
        }
        catch( Exception err ){
            MessageBox.Show(
            "Exception in RefreshListBox: " + err.Message );
        }
    }

    Bei einem Visual Basic-Projekt fügen Sie Ihrer Anwendung den folgenden Code als eine Methode der Form1-Klasse hinzu.



    'Visual Basic
    Private Sub RefreshListBox()
        Try
            Dim cmd As ULCommand = Conn.CreateCommand()
            Dim I As Integer = 0
            lbNames.Items.Clear()
            cmd.CommandText = "SELECT ID, Name FROM Names"
            Dim dr As ULDataReader = cmd.ExecuteReader()
            ReDim ids(dr.RowCount)
            While (dr.MoveNext)
                lbNames.Items.Add(dr.GetString(1))
                ids(I) = dr.GetInt32(0)
                I = I + 1
            End While
            dr.Close()
            txtName.Text = " "   
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
  3. Erstellen Sie das Projekt.

    Bei der Erstellung des Projekts sollten keine Fehlermeldungen ausgegeben werden.

  4. Auf der Registerkarte für den Entwurf des Formulars doppelklicken Sie auf die Schaltfläche Insert, um eine btnInsert_Click-Methode zu erstellen. Diese Methode führt die folgenden Aufgaben aus:

    • Sie instanziert ein ULCommand-Objekt und weist es einer INSERT-Anweisung zu, die den Wert in das Textfeld in der Datenbank einfügt.

    • Die Anweisung ausführen.

    • Das ULCommand-Objekt entfernen.

    • Das Listenfeld aktualisieren.

    • Sie gibt eine Fehlermeldung aus, falls ein Fehler auftritt. Bei SQL-Fehlern wird auch der Fehlercode ausgegeben.

    Bei C# fügen Sie der Methode btnInsert_Click folgenden Code hinzu.



    //Visual C#
    try {
        long RowsInserted;
        using( ULCommand cmd = Conn.CreateCommand() ) {
            cmd.CommandText = 
                "INSERT INTO Names(name) VALUES (?)";
            cmd.Parameters.Add("", txtName.Text);
            RowsInserted = cmd.ExecuteNonQuery();
        }
        RefreshListBox();
    } 
    catch( Exception err ) {
        MessageBox.Show("Exception: " + err.Message );
    }

    Bei Visual Basic fügen Sie der Methode btnInsert_Click folgenden Code hinzu.



    'Visual Basic
    Try
        Dim RowsInserted As Long
        Dim cmd As ULCommand = Conn.CreateCommand()
        cmd.CommandText = "INSERT INTO Names(name) VALUES (?)"
        cmd.Parameters.Add("", txtName.Text)
        RowsInserted = cmd.ExecuteNonQuery()
        cmd.Dispose()
        RefreshListBox()
    Catch
        MsgBox("Exception: " + Err.Description)
    End Try
  5. Auf der Registerkarte für den Entwurf des Formulars doppelklicken Sie auf die Schaltfläche Update, um eine btnUpdate_Click-Methode zu erstellen. Diese Methode führt die folgenden Aufgaben aus:

    • Sie instanziert ein ULCommand-Objekt und weist es einer UPDATE-Anweisung zu, die entsprechend der zugehörigen ID den Wert in das Textfeld in der Datenbank einfügt.

    • Die Anweisung ausführen.

    • Das ULCommand-Objekt entfernen.

    • Das Listenfeld aktualisieren.

    • Sie gibt eine Fehlermeldung aus, falls ein Fehler auftritt. Bei SQL-Fehlern wird auch der Fehlercode ausgegeben.

    Bei C# fügen Sie der Methode btnUpdate_Click folgenden Code hinzu.



    //Visual C#
    try {
        long RowsUpdated;
        int updateID = ids[ lbNames.SelectedIndex ];
        using( ULCommand cmd = Conn.CreateCommand() ){
            cmd.CommandText = 
                "UPDATE Names SET name = ? WHERE id = ?" ;
            cmd.Parameters.Add("", txtName.Text );
            cmd.Parameters.Add("", updateID);
            RowsUpdated = cmd.ExecuteNonQuery();
        }
        RefreshListBox();
    }
    catch( Exception err ) {
        MessageBox.Show(
            "Exception: " + err.Message);
    }

    Bei Visual Basic fügen Sie der Methode btnUpdate_Click folgenden Code hinzu.



    'Visual Basic
    Try
        Dim RowsUpdated As Long
        Dim updateID As Integer = ids(lbNames.SelectedIndex)
        Dim cmd As ULCommand = Conn.CreateCommand()
        cmd.CommandText = "UPDATE Names SET name = ? WHERE id = ?"
        cmd.Parameters.Add("", txtName.Text)
        cmd.Parameters.Add("", updateID)
        RowsUpdated = cmd.ExecuteNonQuery()
        cmd.Dispose()
        RefreshListBox()
    Catch
        MsgBox("Exception: " + Err.Description)
    End Try
  6. Auf der Registerkarte für den Entwurf des Formulars doppelklicken Sie auf die Schaltfläche Delete, um eine btnDelete_Click-Methode zu erstellen. Fügen Sie Code hinzu, um die folgenden Aufgaben auszuführen:

    • Ein ULCommand-Objekt instanzieren und ihm eine DELETE-Anweisung zuweisen. Mit der DELETE-Anweisung wird die ausgewählte Zeile basierend auf der verknüpften ID der Ganzzahl-Array IDs aus der Datenbank gelöscht.

    • Die Anweisung ausführen.

    • Das ULCommand-Objekt entfernen.

    • Das Listenfeld aktualisieren.

    • Eine Fehlermeldung ausgeben, falls ein Fehler auftritt. Bei SQL-Fehlern wird auch der Fehlercode ausgegeben.

    Bei C# fügen Sie der Methode btnDelete_Click folgenden Code hinzu.



    //Visual C#
    try{
        long RowsDeleted;
        int deleteID = ids[lbNames.SelectedIndex];
        using( ULCommand cmd = Conn.CreateCommand() ){
            cmd.CommandText = 
                "DELETE From Names WHERE id = ?" ;
            cmd.Parameters.Add("", deleteID);
            RowsDeleted = cmd.ExecuteNonQuery ();
        }
        RefreshListBox();
    } 
    catch( Exception err ) { 
        MessageBox.Show("Exception: " + err.Message );
    }

    Bei Visual Basic fügen Sie der Methode btnDelete_Click folgenden Code hinzu.



    'Visual Basic
    Try
        Dim RowsDeleted As Long
        Dim deleteID As Integer = ids(lbNames.SelectedIndex)
        Dim cmd As ULCommand = Conn.CreateCommand()
        cmd.CommandText = "DELETE From Names WHERE id = ?"
        cmd.Parameters.Add("", deleteID)
        RowsDeleted = cmd.ExecuteNonQuery()
        cmd.Dispose()
        RefreshListBox()
    Catch
        MsgBox("Exception: " + Err.Description)
    End Try
  7. Erstellen Sie Ihre Anwendung, um zu überprüfen, dass sie korrekt kompiliert.

Ergebnisse

Die Windows Mobile-Anwendung wird so eingerichtet, dass Sie Datenvorgänge in der UltraLite-Datenbank durchführt.

Nächste Schritte

Gehen Sie weiter zu Lektion 5: Erstellung und Deployment der Anwendung.

 Siehe auch