C#里DataSet、DataTable、DataRow的差别和关系,用DataSet、DataTable、DataRow保存查询数据

DataSet、DataTable、DataRow的关系是包含(或着说父子)关系。

举个例子:

DataSet 相当于一个数据库;

DataTable 相当于一张表;

DataRow 相当于一条表里的数据。

写个例子说明一下它们是怎么用的,有什么关系。

窗体程序准备好两个DataGridView,一个准备用DataTable 设置数据源,一个用DataSet设置数据源。点击按钮直接获取数据。

按钮点击事件代码:

private void button1_Click(object sender, EventArgs e)
{
    //数据库的连接串  
    string connStr = "Data Source=.; Initial Catalog=TestDB;User ID=sa;Password=123456";
            
    SqlConnection conn = null; //创建 SQLConnection实例
    conn = new SqlConnection(connStr);
    conn.Open(); //打开数据库链接

    string sql = "select * from tblStudent";
    SqlDataAdapter sda = new SqlDataAdapter(sql, conn); //创建 SQLDataAdapter 对象,获取查询结果
            
    DataTable dt = new DataTable();  //创建DataTable 对象
    sda.Fill(dt);  //将查询结果填充到DataTable
            
    Stu1_dataGridView1.DataSource = dt;//把DataTable里面的第一个对象绑定到第一个dataGridView 


    DataSet ds = new DataSet();//创建DataSet 对象
    ds.Tables.Add(dt);   //将dataTable 添加到DataSet

    Stu2_dataGridView2.DataSource = ds.Tables[0]; //把DataSet里面的第一个对象绑定到第二个dataGridView
}

显示结果如下:

第一个DataGridView 是使用Datatable 赋值数据的,第二个DataGridView 是使用DataSet 赋值数据的。

但它们的效果是一样的,因为DataTable 是可以直接添加到Dataset 里面了。ds.Tables[0] 就是原来的DataTable 的数据。

顺口提一句:当然,SqlDataAdapter 对象也是可以直接填充到DataSet的

sda.Fill(ds);  //SqlDataAdapter 对象直接填充到DataSet
 

而DataRow 则是DataTable 里的一条数据,一条DataRow 相当于:

比如说我在代码中添加如下图的代码:

代码块:

te void button1_Click(object sender, EventArgs e)
{
//数据库的连接串  
string connStr = "Data Source=.; Initial Catalog=TestDB;User ID=sa;Password=123456";
            
SqlConnection conn = null; //创建 SQLConnection实例
conn = new SqlConnection(connStr);
conn.Open(); //打开数据库链接

string sql = "select * from tblStudent";
SqlDataAdapter sda = new SqlDataAdapter(sql, conn); //创建 SQLDataAdapter 对象,获取查询结果
            
DataTable dt = new DataTable();  //创建DataTable 对象
sda.Fill(dt);  //将查询结果填充到DataTable

DataRow dr = dt.NewRow(); //创建与该表具有相同架构的行
dr["StuID"] = 190805;
dr["StuName"] = "程小媛";
dr["Sex"] = "女";
dr["Age"] = 18;
dr["Phone"] = "15634567890";

dt.Rows.Add(dr);  //将一条DataRow 数据添加到DataTable

Stu1_dataGridView1.DataSource = dt;//把DataTable里面的第一个对象绑定到第一个dataGridView 


DataSet ds = new DataSet();//创建DataSet 对象
ds.Tables.Add(dt);   //将dataTable 添加到DataSet

Stu2_dataGridView2.DataSource = ds.Tables[0]; //把DataSet里面的第一个对象绑定到第二个dataGridView
}

而此时运行程序的时候,“程小媛” 这条数据就会添加到DataTable 里面,如下图:

另外,tblStudent 的结构如下:

CREATE TABLE [dbo].[tblStudent](   

	StuID int PRIMARY KEY,--学号
	StuName varchar(16) not null, --姓名
	Sex varchar(4) not null,--性别
	Age int not null,       --年龄
	Phone varchar(32)      --联系电话
)
insert into tblStudent values(190801,'张小三','男',18,'13838284392')
insert into tblStudent values(190802,'赵四四','男',19,'0755-3985632')
insert into tblStudent values(190803,'李小兰','女',17,'13838622426')
insert into tblStudent values(190804,'许安安','女',18,'+8618342469978')

                                                                   ------  汗水是咸的,但用它浇灌理想之树,结出来的果实则是甜的。

发布了20 篇原创文章 · 获赞 34 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/feiduan1211/article/details/98486100