Pearson eText for Starting out with Visual C# -- Instant Access (Pearson+)
Pearson eText for Starting out with Visual C# -- Instant Access (Pearson+)
5th Edition
ISBN: 9780137502783
Author: Tony Gaddis
Publisher: PEARSON+
Question
Book Icon
Chapter 14, Problem 5PP
Program Plan Intro

Program plan:

The variables used in the program are given below:

  1. connectionStringBuilder: an instance of the SqlConnectionStringBuilder class used to create a connection string to the productDB database.
  2. connectionString: a string that holds the connection string to the database.
  3. connection: an instance of the SqlConnection class used to connect to the database.
  4. query: a LINQ query that selects all the products in the database and sorts them by units on hand in ascending order.
  5. minUnitsOnHand: an integer variable that holds the minimum units on hand specified by the user.
  6. hasMin: a boolean variable that indicates whether a minimum number of units on hand was specified by the user.
  7. maxUnitsOnHand: an integer variable that holds the maximum units on hand specified by the user.
  8. hasMax: a boolean variable that indicates whether a maximum number of units on hand was specified by the user.

The methods used in the program are as follows:

  1. The SqlConnectionStringBuilder constructor is used to create a connection string to the database.
  2. The SqlConnection constructor, which creates a new SqlConnection object that can be used to connect to the database.
  3. The SqlCommand constructor creates a new SqlCommand object that can be used to execute a query against the database.
  4. The ExecuteReader method of the SqlCommand class is used to execute the query and return a SqlDataReader object that can be used to read the results.
  5. The Where method of the IQueryable interface is used to filter the data based on a specified condition.
  6. The TryParse method of the int class is used to convert user input from a string to an integer.
  7. The Console.WriteLine method, which is used to display information to the user in the console window.
  8. The Console.ReadLine method, which is used to read user input from the console window.

Program Description:

To write an application that connects to productDB database.

Steps to create an application that connects to a database, sorts, and searches data using LINQ and SQL:

  1. Create a new C# console application project in Visual Studio.
  2. Add a reference to the System.Data.SqlClient and System.Linq namespaces.
  3. Create a connection string to the productDB database using SqlConnectionStringBuilder.
  4. Create a SqlConnection object and open the connection to the database.
  5. Create a LINQ query to select all the products in the database and sort them by units on hand in ascending order. You can use the OrderBy method in LINQ to sort the data.
  6. Execute the query using the SqlCommand object and read the data using the SqlDataReader object.
  7. Display the data to the user.
  8. Prompt the user to enter a minimum and/or maximum number of units on hand.
  9. Modify the LINQ query to filter the products based on the user's input. You can use the Where method in LINQ to filter the data.
  10. Execute the modified query and display the filtered data to the user.
  11. Close the SqlDataReader and SqlConnection objects.

Program:

using System;
using System.Data.SqlClient;
using System.Linq;

namespace ProductUnitsOnHandSearch
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create connection string to the productDB database
            var connectionStringBuilder = new SqlConnectionStringBuilder
            {
                DataSource = "your_server_name",
            // Replace with your actual database name
            InitialCatalog = "productDB",
            IntegratedSecurity = true
        };
        string connectionString = connectionStringBuilder.ToString();

        // Create SqlConnection object and open connection
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();

            // Create LINQ query to select all products and sort by units on hand in ascending order
            var query = from p in db.Products
                        orderby p.UnitsOnHand ascending
                        select p;

            // Execute query and read data
            using (SqlCommand command = new SqlCommand(query.ToString(), connection))
            {
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    // Display all products
                    Console.WriteLine("All Products:");
                    Console.WriteLine("--------------");
                    while (reader.Read())
                    {
                        Console.WriteLine("{0}: {1} units on hand", reader["ProductName"], reader["UnitsOnHand"]);
                    }
                    Console.WriteLine();
                }
            }

            // Prompt user for minimum and maximum units on hand
            Console.Write("Enter minimum units on hand (or leave blank for no minimum): ");
            string minInput = Console.ReadLine();
            int minUnitsOnHand;
            bool hasMin = int.TryParse(minInput, out minUnitsOnHand);

            Console.Write("Enter maximum units on hand (or leave blank for no maximum): ");
            string maxInput = Console.ReadLine();
            int maxUnitsOnHand;
            bool hasMax = int.TryParse(maxInput, out maxUnitsOnHand);

            // Modify query to filter by units on hand based on user input
            if (hasMin)
            {
                query = query.Where(p => p.UnitsOnHand >= minUnitsOnHand);
            }
            if (hasMax)
            {
                query = query.Where(p => p.UnitsOnHand <= maxUnitsOnHand);
            }

            // Execute modified query and display filtered products
            using (SqlCommand command = new SqlCommand(query.ToString(), connection))
            {
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    Console.WriteLine("Filtered Products:");
                    Console.WriteLine("------------------");
                    while (reader.Read())
                    {
                        Console.WriteLine("{0}: {1} units on hand", reader["ProductName"], reader["UnitsOnHand"]);
                    }
                }
            }
        }

        Console.ReadLine();
    }
}
}

Explanation:

The program is a console application that connects to a database called productDB and displays information about the products in the database. The program uses LINQ and SQL to interact with the database and allows the user to search for products with more units on hand than a specified amount or fewer units on hand than a specified amount.

When the program starts, it creates a connection string to the productDB database and opens a connection to the database using the SqlConnection and SqlCommand classes. The program then executes a LINQ query to select all the products in the database and sorts them by units on hand in ascending order.

The program then prompts the user to enter a minimum unit on hand and a maximum unit on hand. If the user enters a valid integer for the minimum or maximum units on hand, the program filters the results using the Where method of the IQueryable interface. If the user does not enter a value for the minimum or maximum units on hand, the program skips that filter.

Finally, the program loops through the results and displays the product ID, name, and units on hand for each product that matches the user's search criteria. If no products match the criteria, the program displays a message indicating that no results were found. The user can then exit the program or search for products again.

SAMPLE OUTPUT:

Enter minimum units on hand (press enter to skip): 50
Enter maximum units on hand (press enter to skip): 100

Products with units on hand between 50 and 100:
----------------------------------------------
Product ID: 2
Name: Rechargeable Lamp

Units on hand: 75

Product ID: 4
Name: Smart watch

Units on hand: 80

Do you want to search again? (Y/N) y

Enter minimum units on hand (press enter to skip): 
Enter maximum units on hand (press enter to skip): 200

Products with units on hand between 0 and 200:
----------------------------------------------
Product ID: 1
Name: Wireless Earbuds
Units on hand: 120

Product ID: 3
Name:Head phones 
Units on hand: 150

Do you want to search again? (Y/N) n
Press any key to exit...

Blurred answer
Students have asked these similar questions
Hands-On Assignments Part II Assignment 1-5: Querying the DoGood Donor Database Review the DoGood Donor data by writing and running SQL statements to perform the following tasks: 1. List each donor who has made a pledge and indicated a single lump sum payment. Include first name, last name, pledge date, and pledge amount. 2. List each donor who has made a pledge and indicated monthly payments over one year. Include first name, last name, pledge date, and pledge amount. Also, display the monthly payment amount. (Equal monthly payments are made for all pledges paid in monthly payments.) 3. Display an unduplicated list of projects (ID and name) that have pledges committed. Don't display all projects defined; list only those that have pledges assigned. 4. Display the number of pledges made by each donor. Include the donor ID, first name, last name, and number of pledges. 5. Display all pledges made before March 8, 2012. Include all column data from the DD PLEDGE table.
Write a FancyCar class to support basic operations such as drive, add gas, honk horn, and start engine. FancyCar.java is provided with method stubs. Follow each step to gradually complete all methods. Note: This program is designed for incremental development. Complete each step and submit for grading before starting the next step. Only a portion of tests pass after each step but confirm progress. The main() method includes basic method calls. Add statements in main() as methods are completed to support development mode testing. Step 0. Declare private fields for miles driven as shown on the odometer (int), gallons of gas in tank (double), miles per gallon or MPG (double), driving capacity (double), and car model (String). Note the provided final variable indicates the gas tank capacity of 14.0 gallons. Step 1 (2 pts). 1) Complete the default constructor by initializing the odometer to five miles, tank is full of gas, miles per gallon is 24.0, and the model is "Old Clunker". 2)…
Find the error: daily_sales = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] days_of_week = ['Sunday', 'Monday', 'Tuesday',                     'Wednesday', 'Thursday', 'Friday',                     'Saturday'] for i in range(7):         daily_sales[i] = float(input('Enter the sales for ' \                                      + day_of_week[i] + ': ')
Knowledge Booster
Background pattern image
Similar questions
SEE MORE QUESTIONS
Recommended textbooks for you
Text book image
CMPTR
Computer Science
ISBN:9781337681872
Author:PINARD
Publisher:Cengage
Text book image
Programming with Microsoft Visual Basic 2017
Computer Science
ISBN:9781337102124
Author:Diane Zak
Publisher:Cengage Learning
Text book image
COMPREHENSIVE MICROSOFT OFFICE 365 EXCE
Computer Science
ISBN:9780357392676
Author:FREUND, Steven
Publisher:CENGAGE L
Text book image
Enhanced Discovering Computers 2017 (Shelly Cashm...
Computer Science
ISBN:9781305657458
Author:Misty E. Vermaat, Susan L. Sebok, Steven M. Freund, Mark Frydenberg, Jennifer T. Campbell
Publisher:Cengage Learning
Text book image
Fundamentals of Information Systems
Computer Science
ISBN:9781305082168
Author:Ralph Stair, George Reynolds
Publisher:Cengage Learning
Text book image
Np Ms Office 365/Excel 2016 I Ntermed
Computer Science
ISBN:9781337508841
Author:Carey
Publisher:Cengage