} //end of Retrieve() public object RetrieveAll(Type type) { List <CustomerProp> list = new List <CustomerProp>(); DBDataReader reader = null; CustomerProp props; try { reader = RunProcedure("usp_CustomerSelectAll"); if (!reader.IsClosed) { while (reader.Read()) { props = new CustomerProp(); props.SetState(reader); list.Add(props); } } return(list); } catch (Exception e) { // log this exception throw; } finally { if (!reader.IsClosed) { reader.Close(); } } }//end of retrieve all
public void TestCreateCustomer() { CustomerProp p2 = (CustomerProp)DB.Create(p); CustomerProp p3 = (CustomerProp)DB.Retrieve(p2.ID); Assert.True(p3.Name.Trim() == p.Name.Trim()); }
public void UpdateContact(CustomerProp CustomerProp) { // Skapar och initierar ett anslutningsobjekt. using (SqlConnection conn = CreateConnection()) { try { SqlCommand cmd = new SqlCommand("AppSchema.UppKund", conn); cmd.CommandType = CommandType.StoredProcedure; // Lägger till de paramterar den lagrade proceduren kräver. Använder här det effektiva sätttet att // göra det på - något "svårare" men ASP.NET behöver inte "jobba" så mycket. cmd.Parameters.Add("@KundID", SqlDbType.VarChar, 50).Value = CustomerProp.CustomerId; cmd.Parameters.Add("@Förnamn", SqlDbType.VarChar, 50).Value = CustomerProp.Förnamn; cmd.Parameters.Add("@Efternamn", SqlDbType.VarChar, 50).Value = CustomerProp.Efternamn; cmd.Parameters.Add("@Ort", SqlDbType.VarChar, 50).Value = CustomerProp.Ort; // Öppnar anslutningen till databasen. conn.Open(); // Den lagrade proceduren innehåller en UPDATE-sats och returnerar inga poster varför metoden // ExecuteNonQuery används för att exekvera den lagrade proceduren. cmd.ExecuteNonQuery(); } catch { // Kastar ett eget undantag om ett undantag kastas. throw new ApplicationException("An error occured in the data hgdfghaccess layer."); } } }
public void TestUpdate() { IBaseProps temp = DB.Retrieve(2); p = (CustomerProp)temp; p.Name = "changed"; Assert.True(DB.Update(p)); }
public void SetUp() { DB = new CustomerDB(dataSource); p = new CustomerProp(); p.Name = "TEST"; p.Address = "Test Address"; p.City = "REEEEEE"; p.State = "OR"; }
}//end of retrieve all public bool Update(IBaseProps p) { int rowsAffected = 0; CustomerProp props = (CustomerProp)p; DBCommand command = new DBCommand(); command.CommandText = "usp_CustomerUpdate"; command.CommandType = CommandType.StoredProcedure; command.Parameters.Add("@CustomerID", SqlDbType.Int); command.Parameters.Add("@Name", SqlDbType.VarChar); command.Parameters.Add("@Address", SqlDbType.NVarChar); command.Parameters.Add("@City", SqlDbType.VarChar); command.Parameters.Add("@State", SqlDbType.Char); command.Parameters.Add("@ZipCode", SqlDbType.Char); command.Parameters.Add("@ConcurrencyID", SqlDbType.Int); command.Parameters["@CustomerID"].Value = props.ID; command.Parameters["@Name"].Value = props.Name; command.Parameters["@Address"].Value = props.Address; command.Parameters["@City"].Value = props.City; command.Parameters["@State"].Value = props.State; command.Parameters["@ZipCode"].Value = props.Zipcode; command.Parameters["@ConcurrencyID"].Value = props.ConcurrencyID; try { rowsAffected = RunNonQueryProcedure(command); if (rowsAffected == 1) { props.ConcurrencyID++; return(true); } else { string message = "Record cannot be updated. It has been edited by another user."; throw new Exception(message); } } catch (Exception e) { // log this exception throw; } finally { if (mConnection.State == ConnectionState.Open) { mConnection.Close(); } } } // end of Update()
public IBaseProps Create(IBaseProps p) { int rowsAffected = 0; CustomerProp props = (CustomerProp)p; DBCommand command = new DBCommand(); command.CommandText = "usp_CustomerCreate"; command.CommandType = CommandType.StoredProcedure; command.Parameters.Add("@CustomerID", SqlDbType.Int); command.Parameters.Add("@Name", SqlDbType.VarChar); command.Parameters.Add("@Address", SqlDbType.VarChar); command.Parameters.Add("@City", SqlDbType.VarChar); command.Parameters.Add("@State", SqlDbType.Char); command.Parameters.Add("@ZipCode", SqlDbType.Char); command.Parameters.Add("@ConcurrencyID", SqlDbType.Int); command.Parameters[0].Direction = ParameterDirection.Output; command.Parameters["@CustomerID"].Value = props.ID; command.Parameters["@Name"].Value = props.Name; command.Parameters["@Address"].Value = props.Address; command.Parameters["@City"].Value = props.City; command.Parameters["@State"].Value = props.State; command.Parameters["@ZipCode"].Value = props.Zipcode; command.Parameters["@ConcurrencyID"].Value = props.ConcurrencyID; try { rowsAffected = RunNonQueryProcedure(command); if (rowsAffected == 1) { props.ID = (int)command.Parameters[0].Value; props.ConcurrencyID = 1; return(props); } else { throw new Exception("Unable to insert record. " + props.ToString()); } } catch (Exception e) { // log this error throw; } finally { if (mConnection.State == ConnectionState.Open) { mConnection.Close(); } } }
public void SetUp() { p = new CustomerProp(); p.ID = 1234; p.Name = "TEST"; p.Address = "REEEEE"; p.City = "Eugene"; p.State = "OR"; p.Zipcode = "97402"; p.ConcurrencyID = 1; p1 = new CustomerProp(); }
public void ContactFormView_InsertItem(CustomerProp CustomerProp) { if (ModelState.IsValid) { try { ServiceCustomer.SaveContact(CustomerProp); Message = String.Format("Ny kontakt lades till i databasen."); Response.Redirect(Request.RawUrl); } catch (Exception) { ModelState.AddModelError(String.Empty, "Ett oväntat fel inträffade då kunduppgiften skulle läggas till."); } } }
protected override void SetUp() { mProps = new CustomerProp(); mOldProps = new CustomerProp(); if (this.mConnectionString == "") { mdbReadable = new CustomerDB(); mdbWriteable = new CustomerDB(); } else { mdbReadable = new CustomerDB(this.mConnectionString); mdbWriteable = new CustomerDB(this.mConnectionString); } }
public IBaseProps Retrieve(Object key) { DBDataReader data = null; CustomerProp props = new CustomerProp(); DBCommand command = new DBCommand(); command.CommandText = "usp_CustomersSelect"; command.CommandType = CommandType.StoredProcedure; command.Parameters.Add("@CustomerID", SqlDbType.Int); command.Parameters["@CustomerID"].Value = (Int32)key; try { data = RunProcedure(command); if (!data.IsClosed) { if (data.Read()) { props.SetState(data); } else { throw new Exception("Record does not exist in the database."); } } return(props); } catch (Exception e) { // log this exception throw; } finally { if (data != null) { if (!data.IsClosed) { data.Close(); } } } } //end of Retrieve()
public void InsertContact(CustomerProp customerProp) { // Skapar och initierar ett anslutningsobjekt. using (SqlConnection conn = CreateConnection()) { try { // Skapar och initierar ett SqlCommand-objekt som används till att // exekveras specifierad lagrad procedur. SqlCommand cmd = new SqlCommand("AppSchema.NyKund", conn); cmd.CommandType = CommandType.StoredProcedure; // Lägger till de paramterar den lagrade proceduren kräver. Använder här det effektiva sätttet att // göra det på - något "svårare" men ASP.NET behöver inte "jobba" så mycket. cmd.Parameters.Add("@Förnamn", SqlDbType.VarChar, 50).Value = customerProp.Förnamn; cmd.Parameters.Add("@Efternamn", SqlDbType.VarChar, 50).Value = customerProp.Efternamn; cmd.Parameters.Add("@Ort", SqlDbType.VarChar, 50).Value = customerProp.Ort; // Den här parametern är lite speciell. Den skickar inte något data till den lagrade proceduren, // utan hämtar data från den. (Fungerar ungerfär som ref- och out-prameterar i C#.) Värdet // parametern kommer att ha EFTER att den lagrade proceduren exekverats är primärnycklens värde // den nya posten blivit tilldelad av databasen. cmd.Parameters.Add("@KundID", SqlDbType.Int, 4).Direction = ParameterDirection.Output; // Öppnar anslutningen till databasen. conn.Open(); // Den lagrade proceduren innehåller en INSERT-sats och returnerar inga poster varför metoden // ExecuteNonQuery används för att exekvera den lagrade proceduren. cmd.ExecuteNonQuery(); // Hämtar primärnyckelns värde för den nya posten och tilldelar Customer-objektet värdet. customerProp.CustomerId = (int)cmd.Parameters["@KundID"].Value; } catch { // Kastar ett eget undantag om ett undantag kastas. throw new ApplicationException("An error occured in the data access layer."); } } }
public bool Delete(IBaseProps p) { CustomerProp props = (CustomerProp)p; int rowsAffected = 0; DBCommand command = new DBCommand(); command.CommandText = "usp_CustomerDelete"; command.CommandType = CommandType.StoredProcedure; command.Parameters.Add("@CustomerID", SqlDbType.Int); command.Parameters.Add("@ConcurrencyID", SqlDbType.Int); command.Parameters["@CustomerID"].Value = props.ID; command.Parameters["@ConcurrencyID"].Value = props.ConcurrencyID; try { rowsAffected = RunNonQueryProcedure(command); if (rowsAffected == 1) { return(true); } else { string message = "Record cannot be deleted. It has been edited by another user."; throw new Exception(message); } } catch (Exception e) { throw new Exception("Something has gone terribly wrong"); } finally { if (mConnection.State == ConnectionState.Open) { mConnection.Close(); } } }
// *** I added these 2 so that I could create a // business object from a properties object // I added the new constructors to the base class public Customer(CustomerProp props) : base(props) { }
public Customer(CustomerProp props, string cnString) : base(props, cnString) { }
public void TestDelete() { p = (CustomerProp)DB.Retrieve(2); Assert.True(DB.Delete(p)); }
public void TestRetrieveProduct() { p = (CustomerProp)DB.Retrieve(3); Assert.True(p.Name == "TEST"); }