12.9 Daten bearbeiten mit dem Command-Objekt
 
Sie möchten die Tabelle Versandfirmen anzeigen und dem Anwender die Möglichkeit bieten, die Inhalte der Tabelle zu bearbeiten. Der Browser zeigt zunächst die komplette Tabelle an. Darunter gibt es drei Eingabefelder für die drei Spalten der Tabelle. Der Anwender selektiert eine Zeile, indem er die Firmen-Nr. eingibt. In den beiden anderen Feldern kann er den Firmennamen und die Telefonnummer aktualisieren. Die Benutzerschnittstelle für dieses Beispiel ist bewusst einfach gehalten, weil zunächst nur das Prinzip der Datenaktualisierung demonstriert werden soll.
In der Ereignisprozedur Page_Load ermitteln Sie, ob ein Postback vorliegt. In diesem Fall setzen Sie aus den Eingabedaten den benötigten SQL-Befehl zusammen und führen ihn aus. Im Anschluss zeigen Sie die Tabelle an. db_16.aspx enthält den kompletten Code für die aspx-Seite. Abbildung 12.17 zeigt die Darstellung im Browser, nachdem ein Datensatz aktualisiert wurde.
<!-- db_16.aspx -->
<%@ Page Language="VB" Debug="True" Strict="True" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script runat="server">
Sub Page_Load (ByVal Sender As Object, _
ByVal E As EventArgs)
' Verbindungszeichenfolge zusammensetzen
Dim connStr As String
connStr = "Provider=Microsoft.Jet.OLEDB.4.0;"
connStr += _
"Data Source=E:\ASPdotNETBuch\Listings\Nordwind.mdb;"
' Verbindung zur Datenbank herstellen
Dim conn As New OleDbConnection(connStr)
conn.Open()
' Bei einem Postback die Tabelle aktualisieren
If IsPostBack() Then
Dim sqlUpdate As String
sqlUpdate = "UPDATE Versandfirmen SET Telefon='"
sqlUpdate += txtTelefon.value
sqlUpdate += "', Firma ='"
sqlUpdate += txtFirma.value
sqlUpdate += "' WHERE [Firmen-Nr] = "
sqlUpdate += txtID.value
Dim cmdUpdate As OleDbCommand
cmdUpdate = New OleDbCommand (sqlUpdate, conn)
Dim erg As Integer
erg = cmdUpdate.ExecuteNonQuery()
ausgabe.innerHTML = "Ausgeführter SQL-Befehl:"
ausgabe.innerHTML += "<br>" & sqlUpdate
End If
' Die Tabelle Versandfirmen anzeigen
Dim sql As String
sql = "SELECT * FROM Versandfirmen"
Dim cmd As New OleDbCommand(sql, conn)
Dim myAdapter As New OleDbDataAdapter()
myAdapter.SelectCommand = cmd
Dim myDS As New DataSet()
myAdapter.Fill (myDS)
myGrid.DataSource = myDS
DataBind()
conn.Close()
End Sub
</script>
<html><head><title>Daten bearbeiten</title></head>
<body>
<h3>Daten bearbeiten</h3>
<asp:DataGrid id="myGrid" runat="server" />
<form runat="server">
Firmen-Nr<br>
<input type="text" id="txtID" runat="server"><br>
Firma<br>
<input type="text" id="txtFirma" runat="server"><br>
Telefon<br>
<input type="text" id="txtTelefon" runat="server"><br>
<br>
<input type="submit" runat="server"
value="Änderungen übernehmen" ><br>
<p runat="server" id="ausgabe" />
</form></body></html>
 Hier klicken, um das Bild zu Vergrößern
Abbildung 12.17 Mit der ExecuteNonQuery-Methode des OleDbCommand-Objekts können Sie die Datenbank aktualisieren.
Der komfortverwöhnte Anwender von heute erwartet jedoch die Möglichkeit zum In-Place-Editing. Das Webserversteuerelement DataGrid ermöglicht eine entsprechende Gestaltung.
|