J
Beispiel 17.7 (fehlt wie alle Beispiele aus Kapitel 17 bei den Beispielen von M+T) funktioniert auch. Es verändert die Tabelle (löscht Bjarne Stroustrup und legt einen "Brand New" Datensatz neu an). Die Original-Tabelle kann man einfach wieder herstellen indem man im SMSE die TestDB-Datenbank löscht und mit dem SQL-Script aus dem vorherigen Beitrag wieder neu erstellt.
using System;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Text;
namespace DataAdapter {
class Program {
static void Main(string[] args) {
SqlConnectionStringBuilder connBuilder = new SqlConnectionStringBuilder();
connBuilder.InitialCatalog = "TestDB";
connBuilder.DataSource = @".\SQLExpress";
connBuilder.IntegratedSecurity = true;
SqlConnection conn = new SqlConnection(connBuilder.ConnectionString);
conn.Open();
SqlCommand selectCommand=conn.CreateCommand();
selectCommand.CommandText="Select * from Users";
SqlCommand updateCommand=conn.CreateCommand();
updateCommand.CommandText=
"update Users set UserName=@UserName,FirstName=@FirstName "+
",LastName=@LastName where UserID=@UserID";
updateCommand.Parameters.Add(
new SqlParameter("@UserName",SqlDbType.VarChar, 50, "UserName"));
updateCommand.Parameters.Add(
new SqlParameter("@FirstName", SqlDbType.VarChar, 50, "FirstName"));
updateCommand.Parameters.Add(
new SqlParameter("@LastName", SqlDbType.VarChar, 50, "LastName"));
updateCommand.Parameters.Add(
new SqlParameter("@UserID", SqlDbType.Int, 4, "UserID"));
SqlCommand deleteCommand=conn.CreateCommand();
deleteCommand.CommandText="delete Users Where UserID=@UserID";
deleteCommand.Parameters.Add(new SqlParameter("UserID",SqlDbType.Int,4,"UserID"));
SqlCommand insertCommand = conn.CreateCommand();
insertCommand.CommandText = "insert into Users(UserName,FirstName,LastName) "+
"values(@UserName,@FirstName,@LastName)";
insertCommand.Parameters.Add(
new SqlParameter("@UserName", SqlDbType.VarChar, 50, "UserName"));
insertCommand.Parameters.Add(
new SqlParameter("@FirstName", SqlDbType.VarChar, 50, "FirstName"));
insertCommand.Parameters.Add(
new SqlParameter("@LastName", SqlDbType.VarChar, 50, "LastName"));
insertCommand.Parameters.Add(
new SqlParameter("@UserID", SqlDbType.Int, 4, "UserID"));
DataSet ds=new DataSet();
SqlDataAdapter sqlDa=new SqlDataAdapter(selectCommand);
sqlDa.UpdateCommand=updateCommand;
sqlDa.DeleteCommand=deleteCommand;
sqlDa.InsertCommand=insertCommand;
sqlDa.Fill(ds);
// Aktualisiert eine bestehende Zeile:
DataTable users=ds.Tables[0];
users.Rows[1].Delete();
// Erstellt eine neue Zeile:
DataRow newUser=users.NewRow();
newUser["UserName"]="added";
newUser["FirstName"]="Brand";
newUser["LastName"]="New";
users.Rows.Add(newUser);
// Ruft Update auf, um den Update-, den Delete- und den Insert-Befehl
// über den DataAdapter an der zugehörigen Datenquelle aufzurufen99:
sqlDa.Update(ds);
Console.WriteLine("Update complete\n");
Console.ReadLine();
}
}
}