Я пытаюсь умножить MontlySalary * BonusRate для расчета столбца Bonus с помощью sql dr в консольном приложении С#. Когда я запускаю свой код, я получаю следующую ошибку:
System.IndexOutOfRangeException: 'MontlySalary * Bonus'
Вот мой код:
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());
}
}





изменять
dr["MontlySalary * BonusRate"].ToString().PadRight(10),
к
(Convert.ToDouble(dr["MontlySalary"]) * Convert.ToDouble(dr["BonusRate"]).ToString().PadRight(10)
или
string sql = "SELECT *, MontlySalary * BonusRate salary FROM Employee";
....
dr["Salary"].ToString().PadRight(10)
Попробуйте ( dr["MontlySalary"] * dr["BonusRate"] ).ToString(), просто убедитесь, что не перенастраиваете нулевые значения в запросе или попробуйте преобразовать в Double, вы также можете сделать это в запросе "Select" вместо того, чтобы делать в коде