我的显示数据的方式通过button按钮点击事件,当点击之后查询数据库库并将数据显示出来。
代码如下:
private void button6_Click(object sender, EventArgs e)
{
this.listView1.View = System.Windows.Forms.View.Details;
listView1.Items.Clear();//每次点击事件后将ListView中的数据清空,重新显示
//此处是设置表头,注释掉是因为我在CS[设计]将ListView的属性Columns设置了,所以此处注释
//this.listView1.Columns.Add("编号", 100, HorizontalAlignment.Left);
//this.listView1.Columns.Add("用户名", 100, HorizontalAlignment.Left);
//this.listView1.Columns.Add("密码", 100, HorizontalAlignment.Left); //设置listview列
SqlConnection connect = new SqlConnection(); //使用Data接口SqlClient类中成员SqlConnection
connect.ConnectionString = ("Server=127.0.0.1;UID=sa;PWD=sql;database=basic"); //给连接对象字符串,使用SQL2008数据库
try
{
connect.Open();
} //尝试打开连接
catch
{
MessageBox.Show("连接失败消息", "消息标题");
} //捕捉异常
finally
{
connect.Close();
} //最终过程还是关闭连接,得到数据集就不需要再打开了
DataSet ds = new DataSet(); //使用数据集成员DataSet对象
string sql = "select * from db_stuusers where teacher='" + userstr + "'";
SqlDataReader datareader;
connect.Open();
SqlCommand command = new SqlCommand(sql,connect);
datareader = command.ExecuteReader();
//SqlDataAdapter sda = new SqlDataAdapter(sql, connect); //调用数据容器读取数据
//sda.Fill(ds); //把数据读到数据集合
if (!datareader.HasRows) //如果没有查询到记录则 datareader.HasRows=false 否则 true
{
MessageBox.Show("没有查询到数据");
}
while (datareader.Read())
{ ListViewItem lt = new ListViewItem();
//将数据库数据转变成ListView类型的一行数据
lt.Text = datareader["ID"].ToString().Trim();//ID为数据库的列名,将数据与表头绑定显示
lt.SubItems.Add(datareader["username"].ToString().Trim());
lt.SubItems.Add(datareader["password"].ToString().Trim());
//将lt数据添加到listView1控件中
listView1.Items.Add(lt);
}
datareader.Close();
connect.Close(); }
刚开始我使用的是ListView1.Clear(),来清空数据库内容,经运行发现数据没有没有清空,才发现需要使用ListView1.Items.Clear();。
这是因为前者是删除ListView的整个结构,而后者仅仅只删除ListView中的内容(即Item和subitem)。