In dieser Lektion fügen Sie Ihrer Anwendung Code hinzu, um die Daten in Ihrer Datenbank zu ändern. Im folgenden Verfahren wird Dynamic SQL verwendet. Dasselbe kann mit der Tabellen-API durchgeführt werden.
Mit den folgenden Schritten erstellen Sie eine unterstützende Methode für die Verwaltung des Listenfeldes. Diese Methode ist für die Datenmanipulationsmethoden erforderlich, die in den später beschriebenen Verfahren erstellt werden.
Rechtsklicken Sie auf das Formular und klicken Sie auf Code anzeigen.
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 |
Erstellen Sie das Projekt.
Bei der Erstellung des Projekts sollten keine Fehlermeldungen ausgegeben werden.
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 |
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 |
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 |
Erstellen Sie Ihre Anwendung, um zu überprüfen, dass sie korrekt kompiliert.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |