C# C SqlDataReader仅读取1行

C# C SqlDataReader仅读取1行,c#,sql-server,sqldatareader,C#,Sql Server,Sqldatareader,我试图从数据库中读取数据以存储在数组中,但SqlDataReader只读取最后一行或第一行,这取决于我使用的是ORDER BY DESC还是ASC,这似乎让我感到困惑 代码: 我试过HasRows博士,但对我来说并不奏效,我在谷歌上搜索并尝试了所有的组合,但似乎都不起作用,我无法让它在从乞讨到最后一行的阅读中起作用 这应该是我的代码的一个组成部分,如果用户之前添加了他的地址,那么从数据库中检索地址。如果结果为真,它将作为选项Saved address 1添加到combobox中,当您单击它时,它

我试图从数据库中读取数据以存储在数组中,但SqlDataReader只读取最后一行或第一行,这取决于我使用的是ORDER BY DESC还是ASC,这似乎让我感到困惑

代码:

我试过HasRows博士,但对我来说并不奏效,我在谷歌上搜索并尝试了所有的组合,但似乎都不起作用,我无法让它在从乞讨到最后一行的阅读中起作用

这应该是我的代码的一个组成部分,如果用户之前添加了他的地址,那么从数据库中检索地址。如果结果为真,它将作为选项Saved address 1添加到combobox中,当您单击它时,它将显示在文本框中。如果有2个地址,则应同时添加这两个地址


正如我所说,我的问题是我无法读取用户添加的所有地址,因为SqlDataReader只能读取最后一行或第一行。。如果有人对我如何做到这一点有想法,请帮助!谢谢

你的循环不正确,你应该这样读:

int i = 0;
while (dr.Read())
{            
    adress[i] = dr["adress"].ToString();
    floor[i] = dr["floor"].ToString();
    city[i] = dr["city"].ToString();
    state[i] = dr["state"].ToString();
    country[i] = dr["country"].ToString();
    zipcode[i] = dr["zipcode"].ToString();
    i++;
}

你的循环不正确,你应该这样读:

int i = 0;
while (dr.Read())
{            
    adress[i] = dr["adress"].ToString();
    floor[i] = dr["floor"].ToString();
    city[i] = dr["city"].ToString();
    state[i] = dr["state"].ToString();
    country[i] = dr["country"].ToString();
    zipcode[i] = dr["zipcode"].ToString();
    i++;
}

为什么要先执行ExecuteOnQuery,然后执行ExecuteReader?ExecuteOnQuery因为我使用sql命令执行中使用的参数,然后执行reader从数据库中读取数据,并能够将它们存储在数组中。您不需要调用getAdr.ExecuteOnQuery,ExecuteReader足够好了,我将删除它,谢谢,但是仍然不能帮助我解决为什么它只读取最后一行或第一行的真正问题:我想你的代码应该如何工作,你能检查一下你的数据吗?在SSMS中测试您的查询。为什么要先执行ExecuteOnQuery,然后执行ExecuteReader?ExecuteOnQuery因为我使用sql命令执行中使用的参数,然后执行reader从db读取数据并能够将它们存储在数组中。您无需调用getAdr.ExecuteOnQuery,ExecuteReader足够好,我将删除它,谢谢,但是仍然不能帮助我解决为什么它只读取最后一行或第一行的真正问题:我想你的代码应该如何工作,你能检查一下你的数据吗?在SSMS中测试您的查询。注意到,但仍然没有解决问题,我使用for循环I<3而不是I