尝试通过列名称获取值时无法将“字符串”转换为“整数”

时间:2019-01-23 18:29:55

标签: c# sql-server

我正在尝试用英里填充文本框。我有一个存储路线和里程的表,其中有一个填充有这些路线的下拉列表。当我尝试将英里数读取到文本框中时,在以下代码中(对于GetInt32GetDecimal,都收到编译时错误“无法将'string'转换为'int'”。

private void location_comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    string conString = "****ConnectionString*****";
    string query = "SELECT * FROM Location_Table WHERE Route = '" +
        location_comboBox.Text + "';"; // simplified, actual code uses parametrized query
    SqlConnection con = new SqlConnection(conString);
    SqlCommand cmd = new SqlCommand(query, con);
    con.Open();
    SqlDataReader myReader = cmd.ExecuteReader();

    while (myReader.Read())
    {
         String Miles = myReader.GetInt32("Miles").ToString();
         mileage_textbox.Text = Miles;
    }
}  

String Miles = myReader.GetInt32("Miles").ToString();行出现错误

  

无法将“字符串”转换为“ int”

这很有意义,因为SqlDataReader.GetInt32需要某种索引(“从零开始的列序。”),但是我想使用列名

数据库中的列类型:

  • 英里-小数(3,1)
  • 路线-varchar(50)
  • id-nchar(10)(未在示例中使用)

1 个答案:

答案 0 :(得分:3)

String Miles = myReader.GetDecimal(myReader.GetOrdinal(“ Miles”))。ToString();