您的位置:首页 > 编程语言 > C#

我的C#之路-dataset、datatable的绑定、清空、添加、删除等操作

2014-08-22 11:03 609 查看

一、dataset和datatable

先说说dataset和datatable,dataset是datatable的一个集合,也就是说一个dataset中可以包含多个datatable,可以用ds.tables[0] ds.tables[1]... 来表示,所以我的习惯一般是建立DataSet ds = new DataSet(),再将多种数据源绑定到ds中,按照绑定的顺序,通过ds.tables[i] 来进行数据操作。

1、绑定数据源的方式:

从数据库筛选后绑定:

DataSet ds = new DataSet();
string connect = "Database=test;server=localhost;User Id=root;Password=root;";
MySqlConnection conn = new MySqlConnection(connect);
conn.Open();
string select_store_info = "select *from information order by 城市;"; //获取所有信息并存入store_information
cmd = new MySqlCommand(select_store_info, conn);
MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
adapter.Fill(ds, "store_information");//自己命名一个在ds中的表名"store_information",用于储存本次的数据
conn.Close();



或者datatable中的绑定:

adapter.Fill(dt);//不用写表名

用这种方法有个问题,那就是如果想在中间插入一段代码,那后面ds.tables[i]的代码都要改。如果想要更好地区分数据源,可以通过两种方法

(1)ds.Tables.Clear(); 如果确定之前绑定的数据在后面用不到了,那么可以通过clear的方式,清空数据表并再次绑定新数据源,将上述相关代码改为:

DataSet ds = new DataSet():
adapter.Fill(ds, "store_information");


这样在后面调用时,都调用ds.tables[0]就行了

还有,clear方法有ds.clear()和ds.tables.clear(),前者清空的所有ds中数据,是dataset类中的方法,后者是tatatable类中的方法,如果写的是tables那就是清空的所有ds中数据,若写的是tables[i]那就是清空特定表,我之前使用时,用ds.clear()有清空不干净的情况发生,所以后来我一直用ds.tables.clear()。

(2)DataSet dsnew = new DataSet();

更方便的方法,再new一个形的dataset。

2、dataset常用操作

ds.tables.add("who");//在ds中加入一个datatable
ds.tables.add(table1);//将table1加入到dataset集合中



remove和canremove

if (dt.Tables.CanRemove(table))//验证是否可被移除
dt.Tables.Remove(table);

或者:

if (dataSet.Tables.CanRemove(table))
dataSet.Tables.RemoveAt(0);
还有contains、copyto、indexof等一些方法不介绍了,可以参看MSDN关于datatablecollection方法类中的说明

二、将dataset中的数据绑定到datagridview、combobox中

combobox:

string selectstorename1 = "select name from store_arrange where 日期='"
+ day1.ToString("yyyy-MM-dd") + "' and 时间='" + comboBox1.Text + "';";
MySqlCommand cmd = new MySqlCommand(selectstorename1, conn);
MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
adapter.Fill(ds, "selecttime");
comboBox3.DisplayMember = "name";//DisplayMember是数据库操作时,select出来的列名
comboBox3.ValueMember = "";<span style="white-space: pre;"> </span>//可随意定义
adapter.Fill(ds, "selecttime");
comboBox3.DisplayMember = "name";//DisplayMember是数据库操作时,select出来的列名
comboBox3.DataSource = ds.Tables[0].DefaultView;



datagridview:

dataGridView1.DataSource = dt;
或者
dataGridView1.DataSource = ds.tables[0];
清空combobox和datagridview

comboBox1.Items.Clear();


下次写一下如何在datagridview中写出个日历

会包括datagridview对行、列的增删改,datetime相关
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐