.NET Notes

ADO.net

Version 0.0 by Samar 29/12/2003

  1. ADO.net (ado.net Layers + Items, System.Data, T-SQL, Transactions)

III. ADO.NET (System.Data)

a. ado.net layers

RDO (Remote Data Objects): ms api usg ms lower-layer DAO (Data Access Objs) for relational db (not non-relational) access; llimited use as as objs couldnt be marshalled across net. evolved into ADO (ActiveX Data Objects). [searchDatabase.com]

ADO (ActiveX Data Objects): OO ms api for db access to relational and non-relational db. improved support for disconnected db; a disconnected recordset can marshall over n/w. pt of Universal Data Access strategy: provide universal access to various kds of db rather than buildg universal db. (oracle)

ADO.net (not ActiveX Data Objects): "the data access model for .NET-based applications" [mackman 2003]; a disconnected and distributed data access technology based on XML, largely indepdt of data src.

    ADO.net core classes / data access layers [webb.226] & sequence:
  1. Physical Data Store : sql, ole, oracle db or xml file
  2. Data provider/ Managed provider: creates in-memory representatn of data; encapsulates data and provides access to it in a generic, db-independt + distributed manner; = Connection obj + Command objs; represts set of data cmds + a db conn used to fill DataSet + update the data src.
    • Connection: est a conn to a specific data src.
    • Command: exec cmd agst a data src.
  3. DataAdapter: a db-independt obj actg as bridge (readg+writg data) betwn DataSet (ie. populatg DataSets) and data source (resolvg updates with db); Data Adapter Configuration Wizard canbe used; new entity phys combing sql cmd + connectn string
  4. DataSet: an in-memory/mem-resident relational representn of the data (tbls + relatnship) with xml support independt of data src,; filled by oDataAdapter.Fill(oDataSet)
  5. Data View : presentn of tbl in data set to user
  _____               _____________
 /      \---------> ( Data Provider )
|\______/|          (  Connection   )
|        |            --------------
|  Data  |                  |
|  Store |                  |                
|        | da.Update()  ------------ da.Fill(ds)--------                     /
|        |<---------- ( DataAdapter ) -------->|DataSet|--------> Data View -<
|        |             ( _________ )           |       |                      \
 \______/                                      --------
    Other classes
  • Transaction : a grp of cmds that must either succd or fail as a unit,
  • DataReader: Reads a forward-only, read-only stream of data from a data src.
  • data consumer app usg services of a data provider for storg, retrievg, + manipulatg data.

Additional classes:

Object Description
CommandBuilder A helper object that will automatically generate command properties of a DataAdapter or will derive parameter information from a stored procedure and populate the Parameters collection of a Command object.
Parameter Defines input, output, and return value parameters for commands and stored procedures.
Exception Returned when an error is encountered at the data source. For an error encountered at the client, .NET Framework data providers throw a .NET Framework exception.
Error Exposes the information from a warning or error returned by a data source.
ClientPermission Provided for .NET Framework data provider code access security attributes.

b. System.Data

c. T-SQL

d. Transactions

Transactn: grp of cmds treated as a single unit, all-or-nothg fashion: if 1 cmd failed, all fail + data removed.

    ado.net Transaction Types
  1. DataSet Transactions : usg RejectChanges() & Update() & AcceptChanges (reset state of records to Unchanged) [webb.273]
    DataSets have implicit transactn processg as changes not made to db until MyDataAdapter.Update()
    MyDataSet.RejectChanges();  // restore DataSet to original state
    MyDataGrid.DataBind(); ...  // refresh the datagrid
    int i = MyAdapter.Update(MyDataSet); // update db from dataset
    Session["MyDataSet"] = MyDataSet;    // save changes to state var
    MyDataGrid.DataBind();               // refresh data grid
    
  2. Database Transactns: use Transaction obj, System.Data.IDbTransaction (represts transactn ) (implemented by 4 types: OdbcTransaction | OleDbTransaction | OracleTransaction | SqlTransaction)
    SqlTransaction MyTrans = MyConnection.BeginTransaaction();
    SqlCommand MyCommand = new SqlCommand();
    MyCommand.Transaction = MyTrans;      MyCommand.CommandText = "...";
    MyCommand.ExecuteNonQuery();          MyTrans.Commit();
    MyConnection.Close(); 
    
    Sql|OracleTransaction MyTransaction = 
      MyConnection.BeginTransaction(IsolationLevel.ReadCommitted);
    SqlCommand MyCommand = new SqlCommand("DELETE ...", MyConnection, MyTransaction);
    try{ int i_rows = MyCommand.ExecuteNonQuery();
         MyTransaction.Commit();  } // commit the transactn 
    catch{ MyTransaction.Rollback(); }
    
  3. Enterprise Transactns (System.EnterpriseServices) : System.EnterpriseServices.ContextUtil provides enterprise transactns; use ms sql server 2000's MS DTC (Microsoft Distributed Transaction Coordinator) to track transactns across multiple webforms across multiple COM+ componts.
      MS DTC:
    1. <%@ Page .... TransAction="RequiresNew" >
    2. use ContextUtil.SetAbort() | SetComplete() to change transactn status
    3. use Page.CommitTransaction() | AbortTransaction()

References