public Person LoadPerson(int id) { try { if (Ids.Contains(id)) { con.Open(); string stm = "Select * from person where id = @theID"; SqlCommand cmd = new SqlCommand(stm, con); cmd.Parameters.AddWithValue("@theId", id); SqlDataReader reader = cmd.ExecuteReader(); reader.Read(); Person p = new Person(); p.Address = reader.GetString(2); p.Id = reader.GetInt32(0); p.Name = reader.GetString(1); p.Rating = reader.GetInt32(3); p.Ts = (byte[]) reader["ts"]; return p; } else { return null; } } finally { con.Close(); } }
private void SavePerson(object sender, RoutedEventArgs e) { Person p = new Person(); p.Ts = loadedPerson.Ts; p.Address = AdressBox.Text; p.Name = NameBox.Text; p.Rating = Int32.Parse(RatingBox.Text); p.Id = loadedPerson.Id; service.SavePerson(p); }
private void LoadPerson(object sender, RoutedEventArgs e) { loadedPerson = service.LoadPerson(Int32.Parse(IdBox.Text)); if (loadedPerson != null) { NameBox.Text = loadedPerson.Name; AdressBox.Text = loadedPerson.Address; RatingBox.Text = "" + loadedPerson.Rating; string b = ""; foreach (byte by in loadedPerson.Ts) { b += by; } TsLabel.Content = b; } else { NameBox.Text = "Wrong ID!"; } }
public void SavePerson(Person person) { try { con.Open(); string stm1 = "Select * from person where id = @theID"; SqlCommand cmd1 = new SqlCommand(stm1, con); cmd1.Parameters.AddWithValue("@theId", person.Id); SqlTransaction transaction = con.BeginTransaction(IsolationLevel.Serializable); cmd1.Transaction = transaction; SqlDataReader reader = cmd1.ExecuteReader(); reader.Read(); Person p = new Person(); p.Address = reader.GetString(2); p.Id = reader.GetInt32(0); p.Name = reader.GetString(1); p.Ts = (byte[])reader["ts"]; reader.Close(); if (Enumerable.SequenceEqual(p.Ts, person.Ts)) { string stm2 = "update person set name = @name, address = @address, rating = @rating where id = @id"; SqlCommand cmd2 = new SqlCommand(stm2, con); cmd2.Parameters.AddWithValue("@name", person.Name); cmd2.Parameters.AddWithValue("@address", person.Address); cmd2.Parameters.AddWithValue("@rating", person.Rating); cmd2.Parameters.AddWithValue("@ts", person.Ts); cmd2.Parameters.AddWithValue("@id", person.Id); cmd2.Transaction = transaction; int i = cmd2.ExecuteNonQuery(); MessageBox.Show("" + i); transaction.Commit(); } else { transaction.Rollback(); MessageBox.Show("Different Timestamps, reread values are: " + p.ToString()); } } finally { con.Close(); } }