CommandBuilder的使用

        public static bool SaveDB(DataTable DT, string SqlText)
        
{
            
try
            
{
                OracleConnection conn 
= new OracleConnection(OracleHelper.connectionString);
                OracleDataAdapter oda 
= new OracleDataAdapter(SqlText, conn);
                OracleCommandBuilder ocb 
= new OracleCommandBuilder(oda);
                oda.InsertCommand 
= ocb.GetInsertCommand();
                oda.DeleteCommand 
= ocb.GetDeleteCommand();
                oda.UpdateCommand 
= ocb.GetUpdateCommand();

                oda.Update(DT);
                
return true;
            }

            
catch (OracleException exx)
            
{
                MessageBox.Show(
"数据库操作失败!" + exx.Message);
                
return false;
            }

        }
什么时候该用commandbuilder  
  1   commandbuilder只适合single   table,不适合用在复杂的关系上  
  2   每次build的时候,它都会连接到数据库,取得相关信息,才能得到   update,delete,insert命令,对性能会有影响  
  3   如果是固定的表、固定的操作可以直接写dataadapter的update,insert,delete命令。因为表的字段可能很多,工作量大(as   mentioned before),VS.NET提供了visual的方法编辑dataadapter,当你把dataadapter控件拖到design上的时候,就会出 现设置的向导,减少工作量  
   
  commandbuilder适合动态的操作,性能会损失
原文地址:https://www.cnblogs.com/zhahost/p/1212396.html