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");