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() 就可以在數據庫里刪除!
??????????????????????????????????????????????????????????????????????????????????不過配合上還有點問題。