ADO.NET查询数据库中数据
查询数据库中数据
通过为SqlDataAdapter类插入select语句,将其结果通过Fill方法以行的形式填充到DataSet结果集中,然后以上下滚动的形式呈现给用户。程序运行结果如图1、图2、图3所示。

图1 查询窗体

图2 提示窗体

图3 提示窗体
程序开发步骤如下。
(1)新建一个windows窗体(FrmSelect),在窗体上添加相应的控件(如图1所示)。
(2)在(ClsDBControl.cs)类内完成查询数据的方法(dsResult)用于返回结果集,以及获得表中行数的方法(Max)返回整数型。
(3)主要程序代码如下。
主要通过SqlDataAdapter类的Fill方法,将查询结果中的数据有选择的一次提取出一条填充到dataSet结果集中,程序代码如下。
publicDataSetdsResult(int currentIndex)
{
int pageSize = 1;
string orderSQL = "SELECT * FROM t_People ORDER BY tb_PID";
SqlDataAdapter adapter = new SqlDataAdapter(orderSQL, ConDB());
DataSetdataSet = newDataSet("t_People");
adapter.Fill(dataSet, currentIndex, pageSize, "t_People");
returnDataSet;
}
获得表中记录的总数,用于标识最后一条信息的索引值。程序代码如下:
public int Max()
{
SqlCommandcmd = new SqlCommand("select count(*) from t_people", ConDB());
return int.Parse(cmd.ExecuteScalar().ToString());
}
窗体加载事件,通过数据操作类(ClsDBControl)内的Max方法获得总行数用于初始化变量(LastNum)。程序代码如下:
private void FrmSelect_Load(object sender, EventArgs e)
{
ClsDB.ClsDBControl CDBLast=new OptDB.ClsDB.ClsDBControl();
LastNum = CDBLast.Max();
}
实现显示“第一条”信息的功能。程序代码如下:
private void button1_Click(object sender, EventArgs e)
{
i = 0;
ClsDB.ClsDBControl cdb = new OptDB.ClsDB.ClsDBControl();
DataSetdsNew=cdb.dsResult(i);
this.textBox1.Text = dsNew.Tables[0].Rows[0][0].ToString();
this.textBox2.Text = dsNew.Tables[0].Rows[0][1].ToString();
this.textBox3.Text = dsNew.Tables[0].Rows[0][2].ToString();
}
实现显示“上一条”信息的功能。程序代码如下:
private void button2_Click(object sender, EventArgs e)
{
i -= 1;
if (i >= 0)
{
ClsDB.ClsDBControl cdb = new OptDB.ClsDB.ClsDBControl();
DataSetdsNew = cdb.dsResult(i);
this.textBox1.Text = dsNew.Tables[0].Rows[0][0].ToString();
this.textBox2.Text = dsNew.Tables[0].Rows[0][1].ToString();
this.textBox3.Text = dsNew.Tables[0].Rows[0][2].ToString();
}
else
{
i += 1;
MessageBox.Show("这已是第一条信息");
}
}
实现显示“最后一条”信息的功能。程序代码如下:
private void button4_Click(object sender, EventArgs e)
{
ClsDB.ClsDBControl cdb = new OptDB.ClsDB.ClsDBControl();
DataSetdsNew = cdb.dsResult(LastNum-1);
this.textBox1.Text = dsNew.Tables[0].Rows[0][0].ToString();
this.textBox2.Text = dsNew.Tables[0].Rows[0][1].ToString();
this.textBox3.Text = dsNew.Tables[0].Rows[0][2].ToString();
i = LastNum - 1;
}
实现显示“下一条”信息的功能。程序代码如下:
private void button3_Click(object sender, EventArgs e)
{
i += 1;
if (i <= (LastNum - 1))
{
ClsDB.ClsDBControl cdb = new OptDB.ClsDB.ClsDBControl();
DataSetdsNew = cdb.dsResult(i);
this.textBox1.Text = dsNew.Tables[0].Rows[0][0].ToString();
this.textBox2.Text = dsNew.Tables[0].Rows[0][1].ToString();
this.textBox3.Text = dsNew.Tables[0].Rows[0][2].ToString();
}
lse
{
i -= 1;//一定要减,否则出现逻辑错误
MessageBox.Show("这已是最后一条信息");
}
}
注意:程序中用到的变量i是用来记录当前信息所在的行数,而LastNum则是用来记录结果集(DataSet)总行数。
完整程序代码如下:
★ ★★★★FrmSelect.cs窗体代码文件完整程序代码★★★★★