namespace zmf_test1
{
    class Program
    {
        static void Main(string[] args)
        {
            SqlConnection dataConnection = new SqlConnection();
            try
            {
                SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
                //  builder.DataSource = ".\\SQLExpress";
                builder.DataSource = "maggie-PC";
                builder.InitialCatalog = "Northwind";
                builder.IntegratedSecurity = true;
                dataConnection.ConnectionString = builder.ConnectionString;
                dataConnection.Open();                Console.Write("Please enter a ProductName (less than 2 characters): ");
                string productName = Console.ReadLine();                SqlCommand dataCommand = new SqlCommand();
                dataCommand.Connection = dataConnection;
                dataCommand.CommandType = CommandType.Text;
                dataCommand.CommandText =
                    "CREATE PROCEDURE AddProduct  @MyProductID int OUTPUT,   @MyProductName nvarchar(40),   @MySupplierID int,   @MyCategoryID int,  @MyQuantityPerUnit nvarchar(20), @MyUnitPrice money,  @MyUnitsInStock smallint,   @MyUnitsOnOrder smallint,    @MyReorderLevel smallint,     @MyDiscontinued bit" +
                    " AS INSERT INTO Products (  ProductName, SupplierID, CategoryID, QuantityPerUnit,  UnitPrice, UnitsInStock, UnitsOnOrder, ReorderLevel,  Discontinued) "+
                    " VALUES (  @MyProductName, @MySupplierID, @MyCategoryID, @MyQuantityPerUnit, "+
                    "@MyUnitPrice, @MyUnitsInStock, @MyUnitsOnOrder, @MyReorderLevel,"+
                    "@MyDiscontinued   )";
                dataCommand.CommandText =
                    "AddProduct(@MyProductID,@MyProductName, @MySupplierID, @MyCategoryID, @MyQuantityPerUnit, " +
                    "@MyUnitPrice, @MyUnitsInStock, @MyUnitsOnOrder, @MyReorderLevel," +
                    "@MyDiscontinued )";
                dataCommand.CommandText =
                    " SELECT @MyProductID = SCOPE_IDENTITY() "
                    int productId = 78;
                    int supplierId = 2;
                    int categoryId = 3;
                    string quantityPerUnit = "1000ml";
                    Decimal unitPrice =8;
                    int unitinstock = 20;
                    int unitsOnOrder = 6;
                    int ReorderLevel = 10;
                    int discontinued =0;
                SqlParameter param = new SqlParameter("@ProductIdParam", SqlDbType.Int,2);
                param.Value = productId;
                dataCommand.Parameters.Add(param);
                SqlParameter param1 = new SqlParameter("@ProductNameParam", SqlDbType.NChar, 50);
                param1.Value = productName;
                dataCommand.Parameters.Add(param1);
                SqlParameter param2 = new SqlParameter("@SupplierIdParam", SqlDbType.Int, 20);
                param1.Value = supplierId;
                dataCommand.Parameters.Add(param2);
                
                SqlParameter param3 = new SqlParameter("@CategoryIDParam", SqlDbType.Int,20);
                param1.Value =categoryId;
                dataCommand.Parameters.Add(param3);
                SqlParameter param4 = new SqlParameter("@QuantityPerUnitParam", SqlDbType.NChar,20);
                param1.Value =quantityPerUnit;
                dataCommand.Parameters.Add(param4);
                SqlParameter param5 = new SqlParameter("@UnitPriceParam", SqlDbType.Money, 20);
                param1.Value =unitPrice;
                dataCommand.Parameters.Add(param5);
                SqlParameter param6 = new SqlParameter("@ UnitsInStockParam", SqlDbType.SmallInt,20);
                param1.Value =unitinstock;
                dataCommand.Parameters.Add(param6);
                SqlParameter param7 = new SqlParameter("@UnitsOnOrderParam", SqlDbType.SmallInt,20);
                param1.Value =unitsOnOrder;
                dataCommand.Parameters.Add(param7);
                SqlParameter param8 = new SqlParameter("@ ReorderLevelParam", SqlDbType.SmallInt,20);
                param1.Value =ReorderLevel;
                dataCommand.Parameters.Add(param8);
                SqlParameter param9 = new SqlParameter("@DiscontinuedParam", SqlDbType.Bit, 1);
                param1.Value =discontinued;
                dataCommand.Parameters.Add(param9);
                Console.WriteLine("About to find orders for Products {0}\n\n",productName);  
                SqlDataReader dataReader = dataCommand.ExecuteReader();
                Console.ReadLine();
                dataReader.Close();            }
            catch (SqlException e)
            {
                Console.WriteLine("Error accessing the database: {0}", e.Message);
            }
            finally
            {
                dataConnection.Close();
            }
        }
    }
}