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

Asp.net 无法使用数据读取器显示列条目,asp.net,sql,sql-server,c#-4.0,Asp.net,Sql,Sql Server,C# 4.0,我正在从一个表中选择一列,该表将有3个或更多条目。我想把它们放在下拉列表中。我尝试了不同的方法,但没有任何东西能提供我所需要的输出。它显示错误或仅显示第一个条目 请随意编辑我的代码,并提供一个合适的想法 谢谢 这是我的桌子: SqlConnection con = new SqlConnection("My path"); SqlCommand cmd; SqlDataReader dr; Label1.Text = Session["name"].ToString(); con.Open(

我正在从一个表中选择一列,该表将有3个或更多条目。我想把它们放在下拉列表中。我尝试了不同的方法,但没有任何东西能提供我所需要的输出。它显示错误或仅显示第一个条目

请随意编辑我的代码,并提供一个合适的想法

谢谢

这是我的桌子:

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
}
其中
Session[“name”]
可以是天空/海洋/陆地,根据这一点,我希望我的下拉列表显示下面的条目如果天空是Session[“name”],那么DropdOnlist应该显示EAGLE-CROW-DUCK

您尝试过吗

SKY  |  SEA  | LAND
-----------------------
EAGLE| SHARK | LION
CROW | FISH  | TIGER
DUCK | WHALE | DEER   
如果希望只获取一次,而不必指定列名,则可以使用GetString(0),如:


根据您的问题,您正在向select查询传递Session[“name”],它是您的表列名

还需要更改您的代码:

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

 while (dr.read()){
      Dropdownlist1.Items.Add(dr.GetString(0));
      break;
 }
Session[Name]
Session[Name]
Session[Name]
这将呈现为从表A中选择“会话[名称]”的
不正确。
因此,结果将是:

"Select '"+Session["name"]+"' from tableA" --session["name"] is treated here as a string
删除查询中的单引号,假设:Session[“name”]值为SKY

 while (dr.read()){
      Dropdownlist1.Items.Add(dr.GetString(0));
      break;
 }
Session[Name]
Session[Name]
Session[Name]
查询将是->
从表1中选择天空

以及选择结果

cmd = new SqlCommand("Select "+Session["name"].ToString()+" from table1",con);
如果是这样,请尝试以下方法:

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

        }

你得到了什么错误?@karthi-我尝试了不同的方法,这些方法给了我不同的错误。我的意思是,我使用了一些可能给我输出的方法,但都失败了…@Edper--给出了超出范围的索引,例外情况是“Name”只是一个例子,你可以在那里使用自己的列名,也可以使用GetString(0)代替@marc_发布的内容。现在,如果你想做一次就可以使用Session。session [[名称] ]是一个值,它会从表中选择适当的列。考虑到该列具有美国、我们、I……的值。我希望我的下拉列表显示美国、我们和I。但是您的代码显示了会话[[名称] ]在下拉式LISTI上更新了我的代码,再试一次..我删除了sqlcommandIt上的“单引号”没有给出错误,但它在dropdownlist中显示了Session[“name”]三次..请参阅我的数据表以获得澄清。例如,它在dropdownlist中显示了三次SKY