介紹了RemoveAt與delete的差別(完成於樂透專案)

VS有類似SSMS的功能,位置在檢視>伺服器總管

image.png

重新介紹了dataAdapter的下面四個指令(屬性),前面有提到

都是用來對SQL下指令的

下面是remove跟delete的按鈕功能實現,以及findBy還有RowState

private void button4_Click(object sender, EventArgs e)
{
    NorthwindDataSet.ProductsRow objProd =
        ds.Products.FindByProductID(80);
    ds.Products.Rows.Remove(objProd);
}
 
private void button5_Click(object sender, EventArgs e)
{
    NorthwindDataSet.ProductsRow objProd =
        ds.Products.FindByProductID(80);
    this.Text = objProd.RowState.ToString();
    objProd.Delete();
    button5.Text = objProd.RowState.ToString();
}

獲取當前數值

private void button6_Click(object sender, EventArgs e)

{

    //NorthwindDataSet.ProductsRow objProd =

    //   ds.Products.FindByProductID(1);

    //button6.Text = objProd.ProductName;
 
    // DataTable dt = ds.Tables[0];

    DataTable dt = ds.Tables["Products"];

    DataRow dr = dt.Rows[0];

    // string s = dr["ProductName"].ToString();

    // string s = dr[1].ToString();

    // button6.Text = s;

    int qty = Convert.ToInt32(dr["UnitsInStock"]);

    button6.Text = qty.ToString();

}
 

獲取原值與現值


        private void button6_Click(object sender, EventArgs e)
        {
            int num = int.Parse(bs.Position.ToString());

            DataTable dt = ds.Tables["Products"];

            DataRow dr = dt.Rows[num];

            int qty = Convert.ToInt32(dr["UnitsInStock"]);

            textBox4.Text = qty.ToString();

            textBox3.Text = 
                dr["UnitsInStock", DataRowVersion.Original].ToString();

        }

TabControl:放置新功能分頁

image.png

關於如何利用dataset的GetChanges獲得變更紀錄:

    private void button7_Click(object sender, EventArgs e)
    {
            //DataSet dsBak = ds.GetChanges();
            //上面這個方法比較不好,因為沒有指定為北風DataSet,之後有可能會找不到Products
            NorthWindDataSet dsBak = ds.GetChanges() as NorthWindDataSet; 
            //這邊指定為北風DataSet,才會取得Products表
            dataGridView2.DataSource = dsBak;
            dataGridView2.DataMember = "Products";
    }