Kris
Kris

Reputation: 187

How to multiply columns using the SQL dr?

I am trying to multiply MontlySalary * BonusRate to calulate a Bonus column using the sql dr in a C# console app. When I run my code I get the following error:

System.IndexOutOfRangeException: 'MontlySalary * Bonus'

Here is my code:

 private static void ShowNewColumns()
    {
        try
        {

            string sql = "SELECT * FROM Employee";
            SqlCommand cmd = new SqlCommand(sql, sqlConnection);
            SqlDataReader dr;
            dr = cmd.ExecuteReader();
            string strID = "ID";
            string strFirstName = "FirstName";
            string strLastName = "LastName";
            string strBonus = "Bonus" ;
            string strTotal = "TotalComp";
            Console.WriteLine("{0} | {1} | {2} | {3} | {4}", strID.PadRight(10), strFirstName.PadRight(10), strLastName.PadRight(10), strBonus.PadRight(10), strTotal);
            Console.WriteLine("==========================================");
            while (dr.Read())
            {
                //reading from the datareader          
                Console.WriteLine("{0} | {1} | {2} | {3} | {4}",
                    dr["ID"].ToString().PadRight(10),
                    dr["FirstName"].ToString().PadRight(10),
                    dr["LastName"].ToString().PadRight(10),
                    dr["MontlySalary * BonusRate"].ToString().PadRight(10),
                    dr["TotalComp"]);
            }
            dr.Close();
            Console.WriteLine("==========================================");

        }
        catch (SqlException ex)
        {
            // Display error        
            Console.WriteLine("Error: " + ex.ToString());
        }
    }

Upvotes: 0

Views: 42

Answers (1)

Derviş Kayımbaşıoğlu
Derviş Kayımbaşıoğlu

Reputation: 30545

change

dr["MontlySalary * BonusRate"].ToString().PadRight(10),

to

(Convert.ToDouble(dr["MontlySalary"]) * Convert.ToDouble(dr["BonusRate"]).ToString().PadRight(10)

or

 string sql = "SELECT *, MontlySalary * BonusRate salary FROM Employee";
 ....
 dr["Salary"].ToString().PadRight(10)

Upvotes: 3

Related Questions