Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按顺序从SQL行读取数据_C#_Asp.net_Sql Server - Fatal编程技术网

C# 按顺序从SQL行读取数据

C# 按顺序从SQL行读取数据,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我正在进行一个过程,在这个过程中,我基本上需要读取大量客户数据,对数据应用一些计算和过程,然后将它们保存到其他地方。我知道如何做我想做的事情,但我不知道如何按顺序(逐行)读取数据。现在,我正在读取帐户数,以便进行循环。以下是我所拥有的: SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString); conn.Open(

我正在进行一个过程,在这个过程中,我基本上需要读取大量客户数据,对数据应用一些计算和过程,然后将它们保存到其他地方。我知道如何做我想做的事情,但我不知道如何按顺序(逐行)读取数据。现在,我正在读取帐户数,以便进行循环。以下是我所拥有的:

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
          conn.Open();
          SqlCommand comm = new SqlCommand("SELECT COUNT(*) FROM Accounts WHERE ID = @ID AND Open = 1", conn);
          comm.Parameters.AddWithValue("@ID", Session["ID"]);
          Int32 count = (Int32)comm.ExecuteScalar();
//testing purposes              
Label3.Text = count.ToString();

        int i = 0;
        while (i <= count)
        {
            //READ COMMAND HERE?


            i = i + 1;


        }



        if (i == count)
        {
           //loading bar
            UpdateProgress1.Visible = false;
        }
SqlConnection-conn=newsqlconnection(ConfigurationManager.ConnectionStrings[“Connection”].ConnectionString);
conn.Open();
SqlCommand comm=new SqlCommand(“从ID=@ID和Open=1的帐户中选择计数(*),conn);
comm.Parameters.AddWithValue(“@ID”,会话[“ID]”);
Int32计数=(Int32)comm.ExecuteScalar();
//测试目的
Label3.Text=count.ToString();
int i=0;

(i而不是ExecuteScalar,您将希望使用ExecuteReader

比如:

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
      conn.Open();
      SqlCommand comm = new SqlCommand("SELECT * FROM Accounts WHERE ID = @ID AND Open = 1", conn);
      comm.Parameters.AddWithValue("@ID", Session["ID"]);
      using(var dataReader = comm.ExecuteReader())
      {
          if(dataReader.HasRows)
           {
                while(dataReader.Read())
                {
                    var myRowColumn1 = dataReader["NameOfColumnInDataBase"].ToString();
                 }
           }
      }

您可能希望添加一个
orderby
,以确保每次运行代码时“sequential”的含义相同…好的,我们将尝试使用ORDER BY suggestion,但Aaron。出现此错误:Non invocable member'System.Data.Common.DbDataReader.HasRows'不能像方法一样使用。啊,我相信它是()在HasRows之后。现在将检查。太好了!很高兴听到这一点,很高兴提供帮助。那么您将拥有多个具有相同ID的帐户吗?否则我不确定此代码将如何返回多行。是的,有多个具有ID的帐户。然后您应该调用该列,而不是
ID
-这通常意味着至少,它是一个唯一的标识符。为了便于阅读,我更改了名称,该ID实际上是一个BranchID标识符,因为帐户来自不同的分支。