用一个SqlDataAdapter填充一个DataSet
用这个DataSet的DataTable创建一个DataView
把这个DataView显示在DataGridView上,然后在DataGridView上修改的东西能不能用
SqlCommandBuilder对象和SqlDataAdapter对象更新这个数据库里面的值。。我的意思是DataTable的值可以用SqlCommandBuilder对象和SqlDataAdapter对象更新这个数据库里面的值但是我现在放在DataView里面,更改了DataView的值,还想更新数据库,怎么做到?
用这个DataSet的DataTable创建一个DataView
把这个DataView显示在DataGridView上,然后在DataGridView上修改的东西能不能用
SqlCommandBuilder对象和SqlDataAdapter对象更新这个数据库里面的值。。我的意思是DataTable的值可以用SqlCommandBuilder对象和SqlDataAdapter对象更新这个数据库里面的值但是我现在放在DataView里面,更改了DataView的值,还想更新数据库,怎么做到?
public partial class Form1 : Form
{
DataTable dt = new DataTable();
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
using (SqlConnection con = new SqlConnection("server=.;user id=sa;pwd=111;database=test1"))
{
con.Open();
SqlCommand cmd = new SqlCommand("select * from A", con);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(dt);
}
DataView dv = dt.DefaultView; dataGridView1.DataSource = dv;
} private void UpdateData()
{
using (SqlConnection con = new SqlConnection("server=.;user id=sa;pwd=111;database=test1"))
{
con.Open();
SqlCommand cmd = new SqlCommand("select * from A", con);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
SqlCommandBuilder cbr = new SqlCommandBuilder(da);
da.Update(dt);
}
} private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(dt.Rows[0][1].ToString());
} private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
UpdateData();
}
}
DataView 类 :表示用于排序、筛选、搜索、编辑和导航的 DataTable 的可绑定数据的自定义视图。
DataView 的一个主要功能是允许在 Windows 窗体和 Web 窗体上进行数据绑定。另外,可自定义 DataView 来表示 DataTable 中数据的子集。此功能让您拥有绑定到同一 DataTable、但显示不同数据版本的两个控件。这就说明:DataView 如果数据库的视图概念,只是表的一个条件查询、排序的临时结果,而真正的数据源,实在DataTable里!DataTable任何变化,都会反应到DataView 。所以,要更新数据库,最终必须与DataTable打交到!你用1楼的办法,可以解决你的问题。
如果他们没有很大的区别,那也就没有必要弄两个类出来了。
我把dataView的值改变,再用DataAdapter的Update,能否联动改变?
DataSet 是一个盒子
DataTable 是一个有数据的表格
DataView 是能看到的表格的样子 盒子里面可以放多个表格,每个表格有自己默认的名字和索引位置;同一个表格可以有多种样子。但是任何一个样子必须是属于某一个表格的;而任何一个表格也都是装在确定的盒子里的。也就是说,盒子是必须存在的,你可以直接指定表格或样子,也可以指定某个盒子里的某个表格。 至于使用上,就看需求了。需要外观的时候就操作DataView,要操作单独的行、列、格里的数据的时候就用就用DataTable,而DataSet只作为装载表格的容器用!DataView是建立在DataTable基础上的,DataView.Table 属性可以得到此DataView对应的那个DataTable。DataView的行叫DataRowView,可以从DataRowView直接通过 DataRowView.Row 属性得到此DataRowView对应的DataRow。