SqlCommandBuilder 爲SqlDataAdapter 提供 update、insert、delete 命令(自己利用select命令自動從數據庫元數據推斷)

        //SqlCommandBuilder 爲 SqlDataAdapter 提供 update、insert、delete 命令(自己利用select命令自動從數據庫元數據推斷)
        //select命令必須包含主鍵(SqlCommandBuilder 自己去推斷其他的三個命令)
        //推斷完成後,不需要對SqlDataAdapter的三個命令進行賦值(當然賦值也行,但是在賦值之前,顯示空異常)
        private void button8_Click(object sender, EventArgs e)
        {
            SqlConnection sqlCon = new SqlConnection(connectionString_da2017);
            //SqlDataAdapter 自動建立數據庫和DataSet的關係
            SqlDataAdapter sqlDa = new SqlDataAdapter("select * from test ", sqlCon);
            SqlCommandBuilder sqlcb = new SqlCommandBuilder(sqlDa);
            DataSet sqlds = new DataSet();
            sqlDa.Fill(sqlds);

            // 數據庫數據
            DataTable databaseData = sqlds.Tables[0];
            DataRow dr =  databaseData.NewRow();
            dr[0] = "0"; //自增的id 此句話無效
            dr[1] = "1235";
            dr[2] = "ABCg";
            databaseData.Rows.Add(dr);
            //SqlCommandBuilder 爲 SqlDataAdapter 提供 update、insert、delete 命令(自己利用select命令自動從數據庫元數據推斷)
            //select 命令必須包含鍵列信息
        
            //如果直接訪問sqlDa.InsertCommand.CommandText 則顯示空異常
            //MessageBox.Show(sqlDa.InsertCommand.CommandText);

            //但是如果 手動給他賦值,又多次一舉(效果是相同的)
            //sqlDa.InsertCommand = sqlcb.GetInsertCommand();
            
            sqlDa.Update(databaseData);
           
            
            //MessageBox.Show(sqlcb.GetDeleteCommand().CommandText);
            //MessageBox.Show(sqlcb.GetInsertCommand().CommandText);
           // MessageBox.Show(sqlcb.GetUpdateCommand().CommandText);
            
            //DELETE FROM [test] WHERE (([id] = @p1) AND ((@p2 = 1 AND [val1] IS NULL) OR ([val1] = @p3)) AND ((@p4 = 1 AND [val2] IS NULL) OR ([val2] = @p5)))
            //INSERT INTO [test] ([val1], [val2]) VALUES (@p1, @p2)
            //UPDATE [test] SET [val1] = @p1, [val2] = @p2 WHERE (([id] = @p3) AND ((@p4 = 1 AND [val1] IS NULL) OR ([val1] = @p5)) AND ((@p6 = 1 AND [val2] IS NULL) OR ([val2] = @p7)))

        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章