开拓自己

NeverDrop

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  0 随笔 :: 14 文章 :: 0 评论 :: 0 Trackbacks

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() 就可以在数据库里删除!
                                                                                  不过配合上还有点问题。


posted on 2007-01-09 21:43 诚夏徕 阅读(211) 评论(0)  编辑  收藏 所属分类: .net

只有注册用户登录后才能发表评论。


网站导航: