我的显示数据的方式通过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)。