Tabellen updaten mit DataSet



  • Hallo!

    Über die Suchfunktion wird man leider nur auf spezielle Problösungen verwiesen

    👎

    Was ich brauche ist ein simples Codebeispiel, wo ich Sql-Statements (SELECT, INSERT, UPDATE) in eine DB absetzen kann.

    Wäre nett, wenn mir da jemand einen Denkanstoß geben könnte. 😋



  • Für alle, die es interessiert:

    SqlConnection cn = new SqlConnection();
    DataSet CustomersDataSet = new DataSet();
    SqlDataAdapter da;
    SqlCommand DAUpdateCmd;
    
    cn.ConnectionString = "Data Source=local;Initial Catalog=Northwind;Integrated Security=True";
    cn.Open();
    
    da = new SqlDataAdapter("select * from CustTest order by CustId", cn);
    DAUpdateCmd = new SqlCommand(""Update CustTest set CustName = @pCustName", da.SelectCommand.Connection);
    
    da.UpdateCommand = DAUpdateCmd;
    da.Fill(CustomersDataSet, "Customers");
    
    CustomersDataSet.Tables["Customers"].Rows[0]["CustName"] = "Jack";
    

    😕
    Aber ich will bspw. 3 von 5 Rows updaten (UPDATE CustTest set CustName = 'fritz' where CustName = 'hans')

    Wie kann man denn in einem Rutsch gleich mehrere Rows updaten? (Ich kann mir schlecht vorstellen, daß man das Select-Statement

    da = new SqlDataAdapter("select * from CustTest order by CustId", cn);
    

    dem Update-Statement

    DAUpdateCmd = new SqlCommand("Update CustTest set CustName = 'franz' where CustName = 'hans'", da.SelectCommand.Connection);
    

    angleichen muss. Oder doch? 😮



  • SqlConnection conn = new SqlConnection("Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;");
    SqlCommand cmd = new SqlCommand("Update Customers SET City = @city WHERE City = '...'", conn);
    cmd.Parameters.Add("@city", SqlDbType.VarChar).Value = "...";
    conn.Open();
    cmd.ExecuteNonQuery();
    conn.Close();
    


  • Vielen Dank, aber das ist nicht unbedingt die Antwort auf die Frage 😞

    Ich hätte gerne gewußt, wie es über das DataSet möglich ist, UPDATE-, DELETE- und INSERT-Statements abzusetzen.



  • Für alle, die es interessiert:

    Update:

    SqlDataAdapter adap = new SqlDataAdapter("select customerid, companyname from customers where customerid like 'e%'", conn);
    adap.Fill(ds, "customers");
    
    foreach (DataRow r in ds.Tables["customers"].Rows)
    {
        r["companyname"] = "_" + r["companyname"];
    }
    
    //automatically will be delete-, insert-, update-statements according to the
    //changes within the dataset created
    SqlCommandBuilder cb = new SqlCommandBuilder(adap);
    adap.Update(ds, "customers");
    
    MessageBox.Show("All CompynyNames beginning with \"E\" has been changed to \"_E\"!", "Update");
    

    Delete:

    SqlDataAdapter adap = new SqlDataAdapter("select orderid, customerid, orderdate from orders where orderid >= 11078", conn);
    adap.Fill(ds, "orders");
    
    foreach (DataRow r in ds.Tables["orders"].Rows)
    {
        r.Delete();
    }
    
    //automatically will be delete-, insert-, update-statements according to the
    //changes within the dataset created
    SqlCommandBuilder cb = new SqlCommandBuilder(adap);
    adap.Update(ds, "orders");
    
    MessageBox.Show("All Orders with id >= 11078 has been deleted!", "Delete");
    

    Insert:

    //work with transactions (a)
    SqlTransaction tx = conn.BeginTransaction();
    
    DataSet ds = new DataSet();
    
    SqlDataAdapter adap = new SqlDataAdapter("select customerid, companyname from customers", conn);
    
    //work with transactions (b)
    adap.SelectCommand.Transaction = tx;
    adap.Fill(ds, "customers");
    
    //just create a new row and fill up with neccessary data
    DataRow newrow = ds.Tables["customers"].NewRow();
    newrow["customerid"] = Guid.NewGuid().ToString().Substring(0, 4);
    newrow["companyname"] = "new row";
    ds.Tables["customers"].Rows.Add(newrow);
    
    //automatically will be delete-, insert-, update-statements according to the
    //changes within the dataset created
    SqlCommandBuilder cb = new SqlCommandBuilder(adap);
    adap.Update(ds, "customers");
    
    //work with transactions (c)
    tx.Commit();
    
    MessageBox.Show("A new customer has been inserted!", "Insert");
    

Anmelden zum Antworten