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标识符,因为帐户来自不同的分支。