日期:2014-05-18  浏览次数:20824 次

C#读取sql server数据的问题
建一个button按钮,点击按钮读取数据库中的数据代码如下:
 private void button2_Click(object sender, EventArgs e)
  {
  string sqlstr3 = "select top 2 * from table_2 order by 学号 asc";
  SqlCommand cmd1 = new SqlCommand(sqlstr3, sqlConnection1);
  sqlConnection1.Open();
  SqlDataReader reader= cmd1.ExecuteReader();
  if (reader.Read() == true)
  {
  textBox1.Text = reader.GetString(0);
  textBox2.Text = reader.GetString(1);
  textBox3.Text = reader.GetString(2);
  }
  sqlConnection1.Close();
  reader.Close();
  }
只能输出一行数据,我想改一下,每点击一下button按钮顺序读取数据库中的数据,就是第一次点击输出第一行,第二次点击输出第二行,可以吗?


------解决方案--------------------
while(reader.Read())
{
textBox1.Text = reader.GetString(0);
textBox2.Text = reader.GetString(1);
textBox3.Text = reader.GetString(2);
}
------解决方案--------------------
定义一个全局变量用来记录当前是第几条记录,然后用计数器定位到这条记录的下一条进行读取。
------解决方案--------------------
探讨
while(reader.Read())
{
textBox1.Text = reader.GetString(0);
textBox2.Text = reader.GetString(1);
textBox3.Text = reader.GetString(2);
}

------解决方案--------------------
探讨
建一个button按钮,点击按钮读取数据库中的数据代码如下:
private void button2_Click(object sender, EventArgs e)
{
string sqlstr3 = "select top 2 * from table_2 order by 学号 asc";
SqlCommand ……

------解决方案--------------------
对的,datareader里面的行要用循环读出来
------解决方案--------------------
定义一个全局变量用来记录当前是第几条记录,然后用计数器定位到这条记录的下一条进行读取
------解决方案--------------------
我认为最好的办法:
不需要每点一次都需要到数据库查一次.
1,定义点击次数int clickCount=0;
如果clickCount=0,则到资料库中查询所有需要的列表;
2,
C# code

if(clickCount>0&&数据不为空)
{
//通过LinQ过滤需要的资料在输出相应的资讯.
}

------解决方案--------------------
用DataTable
定义全局变量
int index=0;
DataTable dt=new DataTable();

private void button2_Click(object sender, EventArgs e)
{
if(index<dt.Rows.Count)
{
textBox1.Text = dt.Rows[index][0];
textBox2.Text = dt.Rows[index][1];
textBox3.Text = dt.Rows[index][2];
index++;
}
}