ListView两种读取数据库表的方式
啦啦啦,学习.net不知不觉已经到了第二周,之前一直用SqlDataReader来读取数据库数据,总是觉得用习惯了一种读取方式,就懒的再学习新知识了。直到今天学习了一下后台分层开发,在封装工具类过程中,才知道using语句和SqlDataReader同时使用时候的弊端。(详见我的另一篇博客:
http://blog.youkuaiyun.com/datoubangzhu/article/details/78474178),然后逼着自己又从头学习了第二种方式。现在一并进行介绍。
- 数据库默认使用MySql数据库。目前来看,sql server数据库里SqlDataReader和SqlCommand、SqlDateAdapter,到了MySql里,就是把前面的Sql改成MySql就行了
文末有代码中用到的两个表的建表语句
一、SqlDataReader方式获取数据库
private void ministerManager_Load(object sender, EventArgs e)
{
//设置表格每一列列名
this.listView1.Items.Clear();
this.listView1.Columns.Clear();
listView1.Columns.Add("编号");
listView1.Columns.Add("姓名");
listView1.Columns.Add("性别");
listView1.Columns.Add("班级");
listView1.Columns.Add("学院");
listView1.Columns.Add("原部门");
listView1.Columns.Add("qq");
listView1.Columns.Add("手机");
listView1.Columns.Add("职务");
listView1.Columns.Add("组织活动");
listView1.Columns.Add("备注");
string constr = "server=localhost;User Id=root;password=root;Database=base";
MySqlConnection mycon = new MySqlConnection(constr);
//查询结果读取器
MySqlDataReader reader = null;
string sqlstr = "select * from minister where status = 1";
//设置查询命令
MySqlCommand cmd = new MySqlCommand(sqlstr, mycon);
//获取查询结果代码:
try
{
//打开连接
mycon.Open();
//执行查询,并将结果返回给读取器
reader = cmd.ExecuteReader();
//开始循环遍历赋值
while (reader.Read())
{
ListViewItem first = new ListViewItem(reader["id"].ToString());
first.SubItems.Add(reader["name"].ToString()); first.SubItems.Add(reader["sex"].ToString()); first.SubItems.Add(reader["class"].ToString()); first.SubItems.Add(reader["department"].ToString());
first.SubItems.Add(reader["original_department"].ToString()); first.SubItems.Add(reader["qq_number"].ToString()); first.SubItems.Add(reader["telephone_number"].ToString());
first.SubItems.Add(reader["position"].ToString());
first.SubItems.Add(reader["organizational_activities"].ToString());
first.SubItems.Add(reader["other"].ToString());
//将所有的内容添加到表格内容中
this.listView1.Items.Add(first);
}
Console.ReadLine();
}
catch (Exception exc) { }
finally
{
reader.Close();
mycon.Close();
}
}
二、DataSet数据集方式获取数据库
private void test_Load(object sender, EventArgs e)
{
///防止重复加载时造成数据重复,在显示数据前将列名和数据清空
this.listView1.Items.Clear();
this.listView1.Columns.Clear();
listView1.Columns.Add("编号");
listView1.Columns.Add("姓名");
listView1.Columns.Add("性别");
listView1.Columns.Add("班级");
listView1.Columns.Add("学院");
listView1.Columns.Add("原部门");
listView1.Columns.Add("qq");
listView1.Columns.Add("手机");
listView1.Columns.Add("职务");
listView1.Columns.Add("组织活动");
listView1.Columns.Add("备注");
//查询结果读取器
//MySqlDataReader reader = null;
string sqlstr = "select * from minister where status = 1";
//设置查询命令
//获取查询结果代码,此处进行了一下简单的封装,
//调用了dqlConnection工具类的方法,直接返回DataSet对象(已充填)
DataSet ds = dqlConnection.getFilledDataSet(sqlstr,"ministerTable");
try
{
//开始循环遍历
foreach(DataRow row in ds.Tables[0].Rows){
ListViewItem first = new ListViewItem(row["id"].ToString());
first.SubItems.Add(row["name"].ToString());
first.SubItems.Add(row["sex"].ToString());
first.SubItems.Add(row["class"].ToString());
first.SubItems.Add(row["department"].ToString());
first.SubItems.Add(row["original_department"].ToString());
first.SubItems.Add(row["qq_number"].ToString());
first.SubItems.Add(row["telephone_number"].ToString());
first.SubItems.Add(row["position"].ToString());
first.SubItems.Add(row["organizational_activities"].ToString());
first.SubItems.Add(row["other"].ToString());
this.listView1.Items.Add(first);
}
Console.ReadLine();//防止一闪而过
}
catch (Exception exc) { }
finally { }
}
--------------------dqlConnection工具类
class dqlConnection
{
public static DataSet getFilledDataSet(string sqlstr,string tableName)
{
string constr = "server=localhost;User Id=root;password=root;Database=root";
//using语句执行完,自动释放占用的资源
using (MySqlConnection con = new MySqlConnection(constr))
{
con.Open();
//创建适配器
MySqlDataAdapter msda = new MySqlDataAdapter(sqlstr,con);
//创建数据集
DataSet ds = new DataSet();
//填充数据集
msda.Fill(ds,tableName);
con.Close();
return ds;
}
}
}
---------------minister和member表的建表语句
//1.minister表
drop table if exists minister ;
/*==============================================================*/
/* Table: minister */
/*==============================================================*/
create table minister
(
id int not null auto_increment,
name varchar(1024) not null,
sex varchar(1024) not null,
class varchar(1024) not null,
department varchar(1024) not null,
original_department varchar(1024) not null,
qq_number varchar(1024) not null,
telephone_number varchar(1024) not null,
position varchar(1024) not null,
organizational_activities varchar(2000),
other varchar(1024),
status int not null,
primary key (id)
);
//2.member表
drop table if exists member;
/*==============================================================*/
/* Table: member */
/*==============================================================*/
create table member
(
id int not null auto_increment,
name varchar(1024) not null,
sex varchar(1024) not null,
class varchar(1024) not null,
department varchar(1024) not null,
qq_number varchar(1024) not null,
telephone_number varchar(1024) not null,
position varchar(1024) not null,
other varchar(1024),
status int not null,
primary key (id)
);
有不明白的伙伴,还可以加群一起讨论学习,QQ群:627968097,这个群只为.NET学习之用,没错,群主就是我(坏笑)。