您的位置:首页 > 数据库

ListView两种读取数据库表的方式

2017-11-08 00:32 253 查看

ListView两种读取数据库表的方式

啦啦啦,学习.net不知不觉已经到了第二周,之前一直用SqlDataReader来读取数据库数据,总是觉得用习惯了一种读取方式,就懒的再学习新知识了。直到今天学习了一下后台分层开发,在封装工具类过程中,才知道using语句和SqlDataReader同时使用时候的弊端。(详见我的另一篇博客:

http://blog.csdn.net/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"].ToStri
cd8d
ng());
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学习之用,没错,群主就是我(坏笑)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: