Reputation: 187
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
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