无法使用数据读取器显示列条目

时间:2013-06-21 05:16:28

标签: asp.net sql sql-server c#-4.0

SqlConnection con = new SqlConnection("My path");
SqlCommand cmd;
SqlDataReader dr;

Label1.Text = Session["name"].ToString();

con.Open();
cmd = new SqlCommand("Select '"+Session["name"]+"' from table1",con);
dr = cmd.ExecuteReader();

while(dr.read()){
   Dropdownlist1.Items.Add();   ------->Stuck here
}

我从表中选择一个包含3个或更多条目的列。我想把它们放在下拉列表中。我尝试了不同的方法,但没有什么能给我输出我需要的。它显示错误或仅显示第一个条目。

请随时编辑我的代码并提供合适的想法。

谢谢

这是我的表:

SKY  |  SEA  | LAND
-----------------------
EAGLE| SHARK | LION
CROW | FISH  | TIGER
DUCK | WHALE | DEER   

Session["name"]可以是SKY / SEA / LAND,根据我的要求,我希望我的下拉菜单显示下面的条目如果SKY是Session [“name”],那么dropdwonlist应显示EAGLE CROW DUCK

3 个答案:

答案 0 :(得分:0)

你试过吗?

 while (dr.read()){
      Dropdownlist1.Items.Add(dr["Name"].ToString());
 }

如果你只想获得一次而不必指定列名,那么你可以使用GetString(0),如:

 while (dr.read()){
      Dropdownlist1.Items.Add(dr.GetString(0));
      break;
 }

答案 1 :(得分:0)

根据您的问题,您将会话[[name]]传递给您的选择查询。

还需要更改代码:

假设您的会话[“名称”]值为 SKY

"Select '"+Session["name"]+"' from tableA" --session["name"] is treated here as a string

这将呈现为Select 'Session[Name]' from TableA,这是不正确的。 所以结果将是:

Session[Name]
Session[Name]
Session[Name]

删除查询中的单引号,让我们说:会话[“名称”]值为 SKY

cmd = new SqlCommand("Select "+Session["name"].ToString()+" from table1",con);

查询将是 - > Select SKY from table1

和选择结果

EAGLE 
CROW 
DUCK

若是,请尝试:

SqlConnection con = new SqlConnection("My path");
SqlCommand cmd;
SqlDataReader dr;

Label1.Text = Session["name"].ToString();

con.Open();
cmd = new SqlCommand("Select "+Session["name"].ToString()+" from table1",con);
dr = cmd.ExecuteReader();

       while (dr.Read())
        {
                   // get the results of each column
                   Dropdownlist1.Items.Add(dr[0].ToString()); //this will get your first column even your Session["name"] will contain any column values

        }

另请参阅本教程:Lesson 04: Reading Data with the SqlDataReader

最好的问候

答案 2 :(得分:0)

你应该使用如下

while (dr.read()){
  ListItem l = new ListItem(dr["name"].ToString(), "value", true);
  Dropdownlist.Items.Add(l);
}