C# 无法转换";“字符串”;至;int";尝试按列名获取值时

C# 无法转换";“字符串”;至;int";尝试按列名获取值时,c#,sql-server,C#,Sql Server,我正在尝试用英里填充文本框。我有一个存储路线和里程的表格,其中有一个填充了这些路线的下拉列表。当我试图将里程读入文本框时,在下面的代码中出现编译时错误“无法将'string'转换为'int'”(对于GetInt32和GetDecimal) LineString Miles=myReader.GetInt32(“Miles”).ToString()给出错误 无法将“字符串”转换为“int” 这是有道理的,因为SqlDataReader.GetInt32需要某种索引(“从零开始的列序号”),但我想使

我正在尝试用英里填充文本框。我有一个存储路线和里程的表格,其中有一个填充了这些路线的下拉列表。当我试图将里程读入文本框时,在下面的代码中出现编译时错误“无法将'string'转换为'int'”(对于
GetInt32
GetDecimal

Line
String Miles=myReader.GetInt32(“Miles”).ToString()给出错误

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

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

DB中的列类型:

  • 英里-十进制(3,1)
  • 路线-varchar(50)
  • id-nchar(10)(不用于样品)

    • 字符串英里数=myReader.GetDecimal(myReader.GetOrdinal(“英里”)).ToString()

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

      很好,我会改变的,我试过“Convert.ToDecimal(myReader[“Miles”]);”,但它不能隐式地将类型“decimal”转换为“string”。对于第二个,在结尾处有一个错误(])。尝试在miles前面添加一个括号和一个“[”,但没有运气@Ryan。感谢帮助:)@Johnathan我修复了底部的一个。刚刚删除了[I仍然得到错误“无法隐式将类型“decimal”转换为“string”。:”(它还显示异常:InvalidCast Exception。是否添加了.ToString()最后?很好,我会改变的,我尝试了“Convert.ToDecimal(myReader[“Miles”]);”但它显示不能隐式地将类型“decimal”转换为“string”。对于第二个类型,在结尾处有一个错误,])。尝试在中添加一个括号和一个“[”在miles前面但没有运气@Ryan.感谢帮助:)@Johnathan我修复了底部的一个。只是删除了[I仍然得到错误“无法将类型'decimal'隐式转换为'string'”:'(它还显示异常:InvalidCast Exception。是否在末尾添加了.ToString()?我尝试了miles\u textbox.Text=myReader.GetString(“miles”);但io仍然会遇到与以前相同的错误:(.我还去掉了.ToString()。此外,您永远不应该将数据粘到字符串中来生成SQL。它很容易出错、过时甚至危险。请使用SQL参数always@WelcomeOverflow我认为当前版本的帖子应该已经得到了以下提示:)我尝试了milies_textbox.Text=myReader.GetString(“Miles”);但io仍然会得到与以前相同的错误:(.我还去掉了.ToString()此外,永远不要将数据粘贴到字符串中来生成SQL。这很容易出错、过时甚至危险。请使用SQL参数always@WelcomeOverflow我认为当前版本的帖子应该已经得到了以下提示:)
      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;
          }
      }