如何从一列检索数据是指同一个表中的另外两列?

时间:2013-04-24 05:56:55

标签: c# asp.net sql-server

我有一个表名

  

flight_info(flight_id,flight_no,depart_from,destination,   depart_time,arrival_time)

现在我想只检索

  

flight_id基于列depart_from和目的地

我写了SQL如下:

string str = "SELECT fligth_id FROM flight_info WHERE  depart_from = @depart AND destination = @destination"

在运行时,它显示错误指向@depart@destination。 你能帮帮我,我怎样才能指定那些标量变量?

我试过了..

SqlDataReader myReader;
string depart = myReader["depart_from"].ToString();
string destination = myReader["destination"].ToString();

但是,它不起作用。 需要帮助。

1 个答案:

答案 0 :(得分:1)

您在查询中使用参数,但未指定参数。

试试这个;

using (SqlConnection connection = new SqlConnection(connectionString))
{
   connection.Open();
   using (SqlCommand command = new SqlCommand("SELECT fligth_id FROM flight_info WHERE  depart_from = @depart AND destination = @destination", connection))
   {
        command.Parameters.Add("@depart", depart);
        command.Parameters.Add("@destination", destination);
        SqlDataReader myReader = command.ExecuteReader();
        while (myReader.Read())
        {
           int fligth_id = reader.GetInt32(0);
        }
   }
}

由于您的查询仅返回fligth_id列,因此您无法以这种方式访问​​depart_fromdestination列。 SqlDataReader逐个读取数据库行

如果您在查询中返回其他列,例如;

SELECT fligth_id, depart_from, destination

你可以用同样的方式阅读它们;

while (myReader.Read())
{
    int fligth_id = reader.GetInt32(0);
    string depart_from = reader.GetString(1);
    string destination = reader.GetString(2);
}