winform里 控件如果要绑定数据! 他绑定的 其实是视图!
下面显示 一般的构造方法:
private SqlConnection conn=new SqlConnection("server=(local);pwd=sa;uid=sa;database=pubs");
private SqlCommand cmd=new SqlCommand("select * from jobs",conn);
private SqlDataAdapter da=new SqlDataAdapter("select * from jobs",conn);
private DataSet ds=new DataSet()//可以起个名字给这个ds
把ds里放入一个虚拟表
da.Fill(ds,"jobs");把da填充到ds里 并且起名字为jobs
private DataView dv=new DataView(ds.Tables["jobs"]); 新建一个 jobs表类型的视图
对绑定在视图的数据进行筛选! 得到的新视图绑定在 控件上!
筛选的语句 其实就是 select语句 的where 后面的部分
例如
dv.RowFilter="max_lvl=100"; 表示筛选max_lvl列上=100的数据;
dv.Sort="max_lvl"; 这个表示对max_lvl列上的数据进行排序;
增加数据
//用Dataset数据级里进行的更新!不过一般建议用Sqlcommand来做
DataRow row=ds.Tables["jobs"].NewRow();
row[1]=this.textBox1.Text;
row[2]=this.textBox2.Text;
row[3]=this.textBox3.Text;
ds.Tables["jobs"].Rows.Add(row); //先前只是新建了符合这个表的 行对象 现在是把这个行加到这个表里
SqlCommandBuilder cb=new SqlCommandBuilder(da);
da.Update(ds,"jobs");
注意row[0]是有的这一列是自动增长的列,所以我不给!
SqlCommandBuilder cb=new SqlCommandBuilder(da);
这一句 是自动生成sqlCommand 的insert语句!(其实这个也可以用在delete 和 update中)
注意 要想这样用 有2个前提 ! 一 在SqlDataAdapter先前 已经使用了select查询语句!这样我们SqlCommandBuilder 才知道这个表的结构才能自动生成insert语句 二 这个表里必须有主键。
如果没有以上2个条件 就必须 用
da.InsertCommand=cmd
cmd就是就是SqlCommand的对象 在里面进行插入语句
最后 一定要有 da.Update(ds,"jobs");
更新:
DataRow row 这个对象似乎 没有new DataRow()对象
他似乎 必须用table来 newRow来产生;
//删除的时候:
DataRow row=ds.Tables["jobs"].Rows[9];
1 ds.Tables["jobs"].Rows.Remove(row);
2 row.Delete();
第一种似乎是在数据集里删那一行! 第2种 delete() 然后后面在配合update() 就可以在数据库里删除!
不过配合上还有点问题。