ADO.NET Example Applications: |
|
The SqlDataReader class of the .NET Framework provides a technique of moving in the records of a set in a forward-only one-way many. For example, imagine you get to a record to view it. Once you finish with such a record, you move to the next record. You cannot visit the previous record. This can provide a fast means of accessing record since there is little processing involved. In this example, we will create a database used to process records for the customers of a car repair shop. When it's time to open a previously saved order, we will use a SqlDataReader object to demonstrate how it can be used. |
Practical Learning: Creating the Application |
Column Name | Data Type | Length | Allow Nulls | Other Properties |
RepairOrderID | int | Primary Key Identity: Yes |
||
OrderDate | datetime | Unchecked | ||
OrderTime | datetime | 20 | Unchecked | |
CustomerName | varchar | Unchecked | ||
Address | varchar | |||
City | varchar | |||
State | char | 2 | ||
ZIPCode | varchar | 10 | ||
Make | varchar | 20 | Unchecked | |
Model | varchar | 32 | Unchecked | |
CarYear | smallint | 5 | Unchecked | |
ProblemDescription | text | Unchecked | ||
PartName1 | varchar | |||
UnitPrice1 | decimal | 10 | Default Value: 0.00 Scale: 2 |
|
Quantity1 | tinyint | 3 | Default Value: 0 | |
SubTotal1 | decimal | 10 | Default Value: 0.00 Scale: 2 |
|
PartName2 | varchar | |||
UnitPrice2 | decimal | 10 | Default Value: 0.00 Scale: 2 |
|
Quantity2 | tinyint | 3 | Default Value: 0 | |
SubTotal2 | decimal | Default Value: 0.00 Scale: 2 |
||
PartName3 | varchar | |||
UnitPrice3 | decimal | Scale: 2 | ||
Quantity3 | tinyint | Default Value: 0 | ||
SubTotal3 | decimal | Default Value: 0.00 Scale: 2 |
||
PartName4 | varchar | |||
UnitPrice4 | decimal | Default Value: 0.00 Scale: 2 |
||
Quantity4 | tinyint | Default Value: 0 | ||
SubTotal4 | decimal | Default Value: 0.00 Scale: 2 |
||
PartName5 | varchar | |||
UnitPrice5 | decimal | Default Value: 0.00 Scale: 2 |
||
Quantity5 | tinyint | Default Value: 0 | ||
SubTotal5 | decimal | Default Value: 0.00 Scale: 2 |
||
JobPerformed1 | varchar | 80 | ||
JobPrice1 | decimal | Default Value: 0.00 Scale: 2 |
||
JobPerformed2 | varchar | 80 | ||
JobPrice2 | decimal | Default Value: 0.00 Scale: 2 |
||
JobPerformed3 | varchar | 80 | ||
JobPrice3 | decimal | Default Value: 0.00 Scale: 2 |
||
JobPerformed4 | varchar | 80 | ||
JobPrice4 | decimal | Default Value: 0.00 Scale: 2 |
||
JobPerformed5 | varchar | 80 | ||
JobPrice5 | decimal | Default Value: 0.00 Scale: 2 |
||
TotalParts | decimal | Unchecked | Default Value: 0.00 Scale: 2 |
|
TotalLabor | decimal | Unchecked | Default Value: 0.00 Scale: 2 |
|
TaxRate | decimal | Unchecked | Default Value: 7.75 Scale: 2 |
|
TaxAmount | decimal | Unchecked | Default Value: 0.00 Scale: 2 |
|
OrderTotal | decimal | Unchecked | Default Value: 0.00 Scale: 2 |
|
Recommendations | text |
|
private void btnReset_Click(object sender, System.EventArgs e) { this.dtpOrderDate.Value = DateTime.Today; this.dtpOrderTime.Value = DateTime.Now; this.txtCustomerName.Text = ""; this.txtAddress.Text = ""; this.txtCity.Text = ""; this.txtState.Text = ""; this.txtZIPCode.Text = ""; this.txtMake.Text = ""; this.txtModel.Text = ""; this.txtCarYear.Text = ""; this.txtProblem.Text = ""; this.txtPartName1.Text = ""; this.txtUnitPrice1.Text = "0.00"; this.txtQuantity1.Text = "0"; this.txtSubTotal1.Text = "0.00"; this.txtPartName2.Text = ""; this.txtUnitPrice2.Text = "0.00"; this.txtQuantity2.Text = "0"; this.txtSubTotal2.Text = "0.00"; this.txtPartName3.Text = ""; this.txtUnitPrice3.Text = "0.00"; this.txtQuantity3.Text = "0"; this.txtSubTotal3.Text = "0.00"; this.txtPartName4.Text = ""; this.txtUnitPrice4.Text = "0.00"; this.txtQuantity4.Text = "0"; this.txtSubTotal4.Text = "0.00"; this.txtPartName5.Text = ""; this.txtUnitPrice5.Text = "0.00"; this.txtQuantity5.Text = "0"; this.txtSubTotal5.Text = "0.00"; this.txtJobPerformed1.Text = ""; this.txtJobPrice1.Text = "0.00"; this.txtJobPerformed2.Text = ""; this.txtJobPrice2.Text = "0.00"; this.txtJobPerformed3.Text = ""; this.txtJobPrice3.Text = "0.00"; this.txtJobPerformed4.Text = ""; this.txtJobPrice4.Text = "0.00"; this.txtJobPerformed5.Text = ""; this.txtJobPrice5.Text = "0.00"; this.txtTotalParts.Text = "0.00"; this.txtTotalLabor.Text = "0.00"; this.txtTaxRate.Text = "7.75"; this.txtTaxAmount.Text = "0.00"; this.txtTotalOrder.Text = "0.00"; this.txtRecommendations.Text = ""; this.txtCustomerName.Focus(); } |
internal void CalculateOrder() { decimal part1UnitPrice = 0.00M, part2UnitPrice = 0.00M, part3UnitPrice = 0.00M, part4UnitPrice = 0.00M, part5UnitPrice = 0.00M, part1SubTotal, part2SubTotal, part3SubTotal, part4SubTotal, part5SubTotal, totalParts; int part1Quantity = 0, part2Quantity = 0, part3Quantity = 0, part4Quantity = 0, part5Quantity = 0; decimal job1Price = 0.00M, job2Price = 0.00M, job3Price = 0.00M, job4Price = 0.00M, job5Price = 0.00M; decimal totalLabor, taxAmount, totalOrder, taxRate = 0.00M; // Don't charge a part unless it is clearly identified if( this.txtPartName1.Text == "" ) { this.txtUnitPrice1.Text = "0.00"; this.txtQuantity1.Text = "0"; this.txtSubTotal1.Text = "0.00"; part1UnitPrice = 0.00M; } else { try { part1UnitPrice = decimal.Parse(this.txtUnitPrice1.Text); } catch(FormatException ) { MessageBox.Show("Invalid Unit Price"); this.txtUnitPrice1.Text = "0.00"; this.txtUnitPrice1.Focus(); } try { part1Quantity = int.Parse(this.txtQuantity1.Text); } catch(FormatException ) { MessageBox.Show("Invalid Quantity"); this.txtQuantity1.Text = "0"; this.txtQuantity1.Focus(); } } if( this.txtPartName2.Text == "" ) { this.txtUnitPrice2.Text = "0.00"; this.txtQuantity2.Text = "0"; this.txtSubTotal2.Text = "0.00"; part2UnitPrice = 0.00M; } else { try { part2UnitPrice = decimal.Parse(this.txtUnitPrice2.Text); } catch(FormatException) { MessageBox.Show("Invalid Unit Price"); this.txtUnitPrice2.Text = "0.00"; this.txtUnitPrice2.Focus(); } try { part2Quantity = int.Parse(this.txtQuantity2.Text); } catch(FormatException) { MessageBox.Show("Invalid Quantity"); this.txtQuantity2.Text = "0"; this.txtQuantity2.Focus(); } } if( this.txtPartName3.Text == "" ) { this.txtUnitPrice3.Text = "0.00"; this.txtQuantity3.Text = "0"; this.txtSubTotal3.Text = "0.00"; part3UnitPrice = 0.00M; } else { try { part3UnitPrice = decimal.Parse(this.txtUnitPrice3.Text); } catch(FormatException ) { MessageBox.Show("Invalid Unit Price"); this.txtUnitPrice3.Text = "0.00"; this.txtUnitPrice3.Focus(); } try { part3Quantity = int.Parse(this.txtQuantity3.Text); } catch(FormatException ) { MessageBox.Show("Invalid Quantity"); this.txtQuantity3.Text = "0"; this.txtQuantity3.Focus(); } } if( this.txtPartName4.Text == "" ) { this.txtUnitPrice4.Text = "0.00"; this.txtQuantity4.Text = "0"; this.txtSubTotal4.Text = "0.00"; part4UnitPrice = 0.00M; } else { try { part4UnitPrice = decimal.Parse(this.txtUnitPrice4.Text); } catch(FormatException ) { MessageBox.Show("Invalid Unit Price"); this.txtUnitPrice4.Text = "0.00"; this.txtUnitPrice4.Focus(); } try { part4Quantity = int.Parse(this.txtQuantity4.Text); } catch(FormatException ) { MessageBox.Show("Invalid Quantity"); this.txtQuantity4.Text = "0"; this.txtQuantity4.Focus(); } } if( this.txtPartName5.Text == "" ) { this.txtUnitPrice5.Text = "0.00"; this.txtQuantity5.Text = "0"; this.txtSubTotal5.Text = "0.00"; part5UnitPrice = 0.00M; } else { try { part5UnitPrice = decimal.Parse(this.txtUnitPrice5.Text); } catch(FormatException ) { MessageBox.Show("Invalid Unit Price"); this.txtUnitPrice5.Text = "0.00"; this.txtUnitPrice5.Focus(); } try { part5Quantity = int.Parse(this.txtQuantity5.Text); } catch(FormatException ) { MessageBox.Show("Invalid Quantity"); this.txtQuantity5.Text = "0"; this.txtQuantity5.Focus(); } } // Don't bill the customer for a job that is not specified if( this.txtJobPerformed1.Text == "" ) { this.txtJobPrice1.Text = "0.00"; job1Price = 0.00M; } else { try { job1Price = decimal.Parse(this.txtJobPrice1.Text); } catch(FormatException ) { MessageBox.Show("Invalid Job Price"); this.txtJobPrice1.Text = "0.00"; this.txtJobPrice1.Focus(); } } if( this.txtJobPerformed2.Text == "" ) { this.txtJobPrice2.Text = "0.00"; job2Price = 0.00M; } else { try { job2Price = decimal.Parse(this.txtJobPrice2.Text); } catch(FormatException ) { MessageBox.Show("Invalid Job Price"); this.txtJobPrice2.Text = "0.00"; this.txtJobPrice2.Focus(); } } if( this.txtJobPerformed3.Text == "" ) { this.txtJobPrice3.Text = "0.00"; job3Price = 0.00M; } else { try { job3Price = decimal.Parse(this.txtJobPrice3.Text); } catch(FormatException ) { MessageBox.Show("Invalid Job Price"); this.txtJobPrice3.Text = "0.00"; this.txtJobPrice3.Focus(); } } if( this.txtJobPerformed4.Text == "" ) { this.txtJobPrice4.Text = "0.00"; job4Price = 0.00M; } else { try { job4Price = decimal.Parse(this.txtJobPrice4.Text); } catch(FormatException ) { MessageBox.Show("Invalid Job Price"); this.txtJobPrice4.Text = "0.00"; this.txtJobPrice4.Focus(); } } if( this.txtJobPerformed5.Text == "" ) { this.txtJobPrice5.Text = "0.00"; job5Price = 0.00M; } else { try { job5Price = decimal.Parse(this.txtJobPrice5.Text); } catch(FormatException) { MessageBox.Show("Invalid Job Price"); this.txtJobPrice5.Text = "0.00"; this.txtJobPrice5.Focus(); } } part1SubTotal = part1UnitPrice * part1Quantity; part2SubTotal = part2UnitPrice * part2Quantity; part3SubTotal = part3UnitPrice * part3Quantity; part4SubTotal = part4UnitPrice * part4Quantity; part5SubTotal = part5UnitPrice * part5Quantity; this.txtSubTotal1.Text = part1SubTotal.ToString("F"); this.txtSubTotal2.Text = part2SubTotal.ToString("F"); this.txtSubTotal3.Text = part3SubTotal.ToString("F"); this.txtSubTotal4.Text = part4SubTotal.ToString("F"); this.txtSubTotal5.Text = part5SubTotal.ToString("F"); totalParts = part1SubTotal + part2SubTotal + part3SubTotal + part4SubTotal + part5SubTotal; totalLabor = job1Price + job2Price + job3Price + job4Price + job5Price; try { taxRate = decimal.Parse(this.txtTaxRate.Text); } catch(FormatException) { MessageBox.Show("Invalid Tax Rate"); this.txtTaxRate.Text = "7.75"; this.txtTaxRate.Focus(); } decimal totalPartsAndLabor = totalParts + totalLabor; taxAmount = totalPartsAndLabor * taxRate / 100; totalOrder = totalPartsAndLabor + taxAmount; this.txtTotalParts.Text = totalParts.ToString("F"); this.txtTotalLabor.Text = totalLabor.ToString("F"); this.txtTaxAmount.Text = taxAmount.ToString("F"); this.txtTotalOrder.Text = totalOrder.ToString("F"); } |
private void txtQuantity1_Leave(object sender, System.EventArgs e) { CalculateOrder(); } |
private void txtQuantity2_Leave(object sender, System.EventArgs e) { CalculateOrder(); } |
private void txtQuantity3_Leave(object sender, System.EventArgs e) { CalculateOrder(); } |
private void txtQuantity4_Leave(object sender, System.EventArgs e) { CalculateOrder(); } |
private void txtQuantity5_Leave(object sender, System.EventArgs e) { CalculateOrder(); } |
private void txtJobPrice1_Leave(object sender, System.EventArgs e) { CalculateOrder(); } |
private void txtJobPrice2_Leave(object sender, System.EventArgs e) { CalculateOrder(); } |
private void txtJobPrice3_Leave(object sender, System.EventArgs e) { CalculateOrder(); } |
private void txtJobPrice4_Leave(object sender, System.EventArgs e) { CalculateOrder(); } |
private void txtJobPrice5_Leave(object sender, System.EventArgs e) { CalculateOrder(); } |
private void btnSaveOrder_Click(object sender, System.EventArgs e) { string strCustomerName = this.txtCustomerName.Text; if( strCustomerName == "" ) { MessageBox.Show("You must provide a name for the customer"); return; } string strOrderDate = this.dtpOrderDate.Value.ToString("d"); string strOrderTime = this.dtpOrderTime.Value.ToString("t"); string strNewRepairOrder = "INSERT INTO RepairOrders(OrderDate, " + "OrderTime, CustomerName, Address, " + "City, State, ZIPCode, Make, Model, " + "CarYear, ProblemDescription, PartName1, " + "UnitPrice1, Quantity1, SubTotal1, " + "PartName2, UnitPrice2, Quantity2, " + "SubTotal2, PartName3, UnitPrice3, " + "Quantity3, SubTotal3, PartName4, " + "UnitPrice4, Quantity4, SubTotal4, " + "PartName5, UnitPrice5, Quantity5, " + "SubTotal5, JobPerformed1, JobPrice1, " + "JobPerformed2, JobPrice2, JobPerformed3, " + "JobPrice3, JobPerformed4, JobPrice4, " + "JobPerformed5, JobPrice5, TotalParts, " + "TotalLabor, TaxRate, TaxAmount, " + "OrderTotal, Recommendations) " + "VALUES('" + strOrderDate + "', '" + strOrderTime + "', '" + strCustomerName + "', '" + this.txtAddress.Text + "', '" + this.txtCity.Text + "', '" + this.txtState.Text + "', '" + this.txtZIPCode.Text + "', '" + this.txtMake.Text + "', '" + this.txtModel.Text + "', '" + this.txtCarYear.Text + "', '" + this.txtProblem.Text + "', '" + this.txtPartName1.Text + "', '" + this.txtUnitPrice1.Text + "', '" + this.txtQuantity1.Text + "', '" + this.txtSubTotal1.Text + "', '" + this.txtPartName2.Text + "', '" + this.txtUnitPrice2.Text + "', '" + this.txtQuantity2.Text + "', '" + this.txtSubTotal2.Text + "', '" + this.txtPartName3.Text + "', '" + this.txtUnitPrice3.Text + "', '" + this.txtQuantity3.Text + "', '" + this.txtSubTotal3.Text + "', '" + this.txtPartName4.Text + "', '" + this.txtUnitPrice4.Text + "', '" + this.txtQuantity4.Text + "', '" + this.txtSubTotal4.Text + "', '" + this.txtPartName5.Text + "', '" + this.txtUnitPrice5.Text + "', '" + this.txtQuantity5.Text + "', '" + this.txtSubTotal5.Text +"', '" + this.txtJobPerformed1.Text + "', '" + this.txtJobPrice1.Text + "', '" + this.txtJobPerformed2.Text + "', '"+ this.txtJobPrice2.Text + "', '" + this.txtJobPerformed3.Text + "', '" + this.txtJobPrice3.Text + "', '" + this.txtJobPerformed4.Text + "', '" + this.txtJobPrice4.Text + "', '" + this.txtJobPerformed5.Text + "', '" + this.txtJobPrice5.Text + "', '" + this.txtTotalParts.Text + "', '" + this.txtTotalLabor.Text + "', '" + this.txtTaxRate.Text + "', '" + this.txtTaxAmount.Text + "', '" + this.txtTotalOrder.Text + "', '" + this.txtRecommendations.Text + "');"; System.Data.SqlClient.SqlConnection conDatabase = new System.Data.SqlClient.SqlConnection( "Data Source=(local);Database='CPAS';Integrated Security=yes"); System.Data.SqlClient.SqlCommand cmdDatabase = new System.Data.SqlClient.SqlCommand(strNewRepairOrder, conDatabase); conDatabase.Open(); cmdDatabase.ExecuteNonQuery(); conDatabase.Close(); } |
private void btnClose_Click(object sender, System.EventArgs e) { Close(); } |
private void btnOpen_Click(object sender, System.EventArgs e) { string strReceiptNumber = this.txtReceiptNumber.Text; if( strReceiptNumber == "" ) { MessageBox.Show("You must provide a receipt number to look for the repair"); return; } string strFindRepair = "SELECT * FROM RepairOrders WHERE RepairOrderID = '" + strReceiptNumber + "'"; System.Data.SqlClient.SqlConnection conDatabase = new System.Data.SqlClient.SqlConnection("Data Source=(local);Database='CPAS';Integrated Security=yes"); System.Data.SqlClient.SqlCommand cmdDatabase = new System.Data.SqlClient.SqlCommand(strFindRepair, conDatabase); conDatabase.Open(); System.Data.SqlClient.SqlDataReader rdrRepairOrder; rdrRepairOrder = cmdDatabase.ExecuteReader(); while( rdrRepairOrder.Read() ) { this.dtpOrderDate.Value = rdrRepairOrder.GetDateTime(1); this.dtpOrderTime.Value = rdrRepairOrder.GetDateTime(2); this.txtCustomerName.Text = rdrRepairOrder.GetString(3); this.txtAddress.Text = rdrRepairOrder.GetString(4); this.txtCity.Text = rdrRepairOrder.GetString(5); this.txtState.Text = rdrRepairOrder.GetString(6); this.txtZIPCode.Text = rdrRepairOrder.GetString(7); this.txtMake.Text = rdrRepairOrder.GetString(8); this.txtModel.Text = rdrRepairOrder.GetString(9); this.txtCarYear.Text = rdrRepairOrder.GetSqlInt16(10).ToString(); this.txtProblem.Text = rdrRepairOrder.GetString(11); this.txtPartName1.Text = rdrRepairOrder.GetString(12); this.txtUnitPrice1.Text = rdrRepairOrder.GetSqlDecimal(13).ToString(); this.txtQuantity1.Text = rdrRepairOrder.GetSqlByte(14).ToString(); this.txtSubTotal1.Text = rdrRepairOrder.GetSqlDecimal(15).ToString(); this.txtPartName2.Text = rdrRepairOrder.GetString(16); this.txtUnitPrice2.Text = rdrRepairOrder.GetSqlDecimal(17).ToString(); this.txtQuantity2.Text = rdrRepairOrder.GetSqlByte(18).ToString(); this.txtSubTotal2.Text = rdrRepairOrder.GetSqlDecimal(19).ToString(); this.txtPartName3.Text = rdrRepairOrder.GetString(20); this.txtUnitPrice3.Text = rdrRepairOrder.GetSqlDecimal(21).ToString(); this.txtQuantity3.Text = rdrRepairOrder.GetSqlByte(22).ToString(); this.txtSubTotal3.Text = rdrRepairOrder.GetSqlDecimal(23).ToString(); this.txtPartName4.Text = rdrRepairOrder.GetString(24); this.txtUnitPrice4.Text = rdrRepairOrder.GetSqlDecimal(25).ToString(); this.txtQuantity4.Text = rdrRepairOrder.GetSqlByte(26).ToString(); this.txtSubTotal4.Text = rdrRepairOrder.GetSqlDecimal(27).ToString(); this.txtPartName5.Text = rdrRepairOrder.GetString(28); this.txtUnitPrice5.Text = rdrRepairOrder.GetSqlDecimal(29).ToString(); this.txtQuantity5.Text = rdrRepairOrder.GetSqlByte(30).ToString(); this.txtSubTotal5.Text = rdrRepairOrder.GetSqlDecimal(31).ToString(); this.txtJobPerformed1.Text = rdrRepairOrder.GetString(32); this.txtJobPrice1.Text = rdrRepairOrder.GetSqlDecimal(33).ToString(); this.txtJobPerformed2.Text = rdrRepairOrder.GetString(34); this.txtJobPrice2.Text = rdrRepairOrder.GetSqlDecimal(35).ToString(); this.txtJobPerformed3.Text = rdrRepairOrder.GetString(36); this.txtJobPrice3.Text = rdrRepairOrder.GetSqlDecimal(37).ToString(); this.txtJobPerformed4.Text = rdrRepairOrder.GetString(38); this.txtJobPrice4.Text = rdrRepairOrder.GetSqlDecimal(39).ToString(); this.txtJobPerformed5.Text = rdrRepairOrder.GetString(40); this.txtJobPrice5.Text = rdrRepairOrder.GetSqlDecimal(41).ToString(); this.txtTotalParts.Text = rdrRepairOrder.GetSqlDecimal(42).ToString(); this.txtTotalLabor.Text = rdrRepairOrder.GetSqlDecimal(43).ToString(); this.txtTaxRate.Text = rdrRepairOrder.GetSqlDecimal(44).ToString(); this.txtTaxAmount.Text = rdrRepairOrder.GetSqlDecimal(45).ToString(); this.txtTotalOrder.Text = rdrRepairOrder.GetSqlDecimal(46).ToString(); this.txtRecommendations.Text = rdrRepairOrder.GetString(47); } rdrRepairOrder.Close(); conDatabase.Close(); } |
|
||
Home | Copyright © 2005-2016, FunctionX | |
|