我有一个表名
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();
但是,它不起作用。 需要帮助。
答案 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_from
和destination
列。 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);
}