Rajesh’s Weblog

Just another WordPress.com weblog

Archive for the ‘Training’ Category

ADO .NET

Posted by arajesh on April 1, 2008

Most applications need data access at one point of time making it a crucial component
when working with applications. Data access is making the application interact with
a database, where all the data is stored. Different applications have different requirements
for database access. VB .NET uses ADO .NET (Active X Data
Object) as it’s data access and manipulation protocol which also enables us to work
with data on the Internet. Let’s take a look why ADO .NET came into picture replacing
ADO.

Evolution of ADO.NET

The first data access model, DAO (data access model) was
created for local databases with the built-in Jet engine which had performance and
functionality issues. Next came RDO (Remote Data Object)
and ADO (Active Data Object) which were designed for Client
Server architectures but soon ADO took over RDO. ADO was a good architecture but as
the language changes so is the technology. With ADO, all the data is contained in
a recordset object which had problems when implemented on
the network and penetrating firewalls. ADO was a connected data
access, which means that when a connection to the database is established the connection
remains open until the application is closed. Leaving the connection open for the
lifetime of the application raises concerns about database security and network
traffic. Also, as databases are becoming increasingly important and as they are
serving more people, a connected data access model makes us think about its productivity.
For example, an application with connected data access may do well when connected
to two clients, the same may do poorly when connected to 10 and might be unusable
when connected to 100 or more. Also, open database connections use system resources
to a maximum extent making the system performance less effective.

Why ADO.NET?

To cope up with some of the problems mentioned above, ADO .NET came into existence.
ADO .NET addresses the above mentioned problems by maintaining a disconnected database
access model which means, when an application interacts with the database, the
connection is opened to serve the request of the application and is closed as soon
as the request is completed. Likewise, if a database is Updated, the connection is
opened long enough to complete the Update operation and is closed. By keeping connections
open for only a minimum period of time, ADO .NET conserves system resources and provides
maximum security for databases and also has less impact on system performance. Also,
ADO .NET when interacting with the database uses XML and converts all the
data into XML format for database related operations making them more efficient.

The ADO.NET Data Architecture

Data Access in ADO.NET relies on two components: DataSet and Data
Provider.

DataSet

The dataset is a disconnected, in-memory representation
of data. It can be considered as a local copy of the
relevant portions of the database. The DataSet is persisted in memory and the data
in it can be manipulated and updated independent of the database. When the use of
this DataSet is finished, changes can be made back to the central database for updating.
The data in DataSet can be loaded from any valid data source like Microsoft SQL server
database, an Oracle database or from a Microsoft Access database.

Data Provider

The Data Provider is responsible for providing and maintaining the
connection to the database. A DataProvider is a set of related components that work
together to provide data in an efficient and performance driven manner. The .NET Framework
currently comes with two DataProviders: the SQL Data Provider which
is designed only to work with Microsoft’s SQL Server 7.0 or later and the OleDb
DataProvider which allows us to connect to other types of databases like Access
and Oracle. Each DataProvider consists of the following component classes:

The Connection object which provides a connection to
the database

The Command object which is used to execute a command

The DataReader object which provides a forward-only, read
only, connected recordset

The DataAdapter object which populates a disconnected DataSet
with data and performs update

Data access with ADO.NET can be summarized as follows:

A connection object establishes the connection for the application with the database.
The command object provides direct execution of the command to the database. If the
command returns more than a single value, the command object returns a DataReader
to provide the data. Alternatively, the DataAdapter can be used to fill the Dataset
object. The database can be updated using the command object or the DataAdapter.

ADO .NET Data Architecture

Component classes that make up the Data Providers

The Connection Object

The Connection object creates the connection to the database. Microsoft Visual Studio
.NET provides two types of Connection classes: the SqlConnection object,
which is designed specifically to connect to Microsoft SQL Server 7.0 or later, and
the OleDbConnection object, which can provide connections
to a wide range of database types like Microsoft Access and Oracle. The Connection
object contains all of the information required to open a connection to the database.

The Command Object

The Command object is represented by two corresponding classes: SqlCommand and OleDbCommand.
Command objects are used to execute commands to a database across a data connection.
The Command objects can be used to execute stored procedures on the database, SQL
commands, or return complete tables directly. Command objects provide three methods
that are used to execute commands on the database:

ExecuteNonQuery: Executes commands that have no return values
such as INSERT, UPDATE or DELETE

ExecuteScalar: Returns a single value from a database query

ExecuteReader: Returns a result set by way of a DataReader
object

The DataReader Object

The DataReader object provides a forward-only, read-only, connected stream recordset from a database. Unlike other components of the Data Provider,

DataReader objects cannot be directly instantiated. Rather, the DataReader is returned as the result of the Command object’s ExecuteReader method.

The SqlCommand.ExecuteReader method returns a SqlDataReader object, and the OleDbCommand.ExecuteReader method returns an OleDbDataReader object. The DataReader can provide rows of data directly to application logic when you do not need to keep the data cached in memory.
Because only one row is in memory at a time, the DataReader provides the lowest overhead in terms of system performance but requires the exclusive use of an open Connection object for the lifetime of the DataReader.

The DataAdapter Object

The DataAdapter is the class at the core of ADO .NET’s disconnected data access. It
is essentially the middleman facilitating all communication
between the database and a DataSet. The DataAdapter is used either to fill a DataTable
or DataSet with data from the database with it’s Fill method.
After the memory-resident data has been manipulated, the DataAdapter can commit the
changes to the database by calling the Update method. The DataAdapter provides four
properties that represent database commands:

SelectCommand

InsertCommand

DeleteCommand

UpdateCommand

When the Update method is called, changes in the DataSet are copied back to the database and the appropriate InsertCommand, DeleteCommand, or UpdateCommand is executed.

Posted in Training | Leave a Comment »

Power of money

Posted by arajesh on April 1, 2008

You would have learnt a few hedging and arbitrage strategies thro. my earlier posts.You would have noticed that in India and the world over, markets take a tumble (mostly around May) after a steady climb.You would have noticed some big falls in May 2004 and in May/June 2006 here in India.Have you ever wondered why this happens,when there is so much hype about India’s growth story.I am calling it a hype because the media projects India’s growth story more than the rate at which India is growing.But this is my personal opinion and you may disagree with me.But being a regular tracker of world’s economies and all kinds of markets, I am more inclined to make this statement.Ok… coming back to the markets’ falls, do you know the answer? It requires just a few analytical skills,good understanding of financial concepts,theories and products and regular tracking of economies’ and markets to understand this phenomena.Let me demystify to you one of the many strategies that creates this phenomena.I would be using the term ‘biggies’ here to refer to Hedge funds,FIIs,MFs,HNIs etc.Read below just one simple example in the Indian stock market:

A few days earlier the futures price was quoting much higher than the cash price for most stocks. All the biggies normally used to arbitrage by buying in cash and selling in futures.So if a share quotes @ 100 in cash and 104 in futures,they buy in cash @100/share and sell in futures @104/share.Thereby they lock a profit of Rs.4.

How?

1) If the share price increases to 106 by settlement (when Cash price = futures price),they make a profit of 6/share in cash.But they lose 2/share in
futures.The Net profit/share is 4Rs./share.

2) If the share price decreases to 98 by settlement (when Cash price = futures price),they make a loss of 2/share in cash but they make a profit of 8 per share in futures.Heragain the Net profit/share is 4Rs.

Note:The shares bought in cash is sold on the derivative expiry date while the futures are bought back to square off and make the above profits.

This is what the biggies normally used to do.

Consider this now:

Now if theybuy 2000 crores in cash then they need only 500 crores(as margin) to sell thesame number of shares in futures (assuming 25% is the margin amount).

If say, they start selling 2000 crores worth shares (bought in cash) the mkts tumble and when innocent people join the chaos and start selling, the mkt prices of shares tumble to a greater extent.

In my above example,assume the share price falls to Rs. 60 in cash.biggies would have sold the shares in cash at an avg. price of Rs.80/share.So their loss in cash is 100-80 = 20/share.But their gain in futures is 104-60=44/share.Hence the net profit they make is 44 – 20 = 24/share.

So in a normal arbitrage scenario they make a profit of Rs.4/share. When the mkts tumble they make a profit of 24/share.this is a killing. Sometimes the biggies used totake more sell positions in futures and make a still bigger killing.

The above is possible if a few biggies join together and carry out this plan.

This kindof market play was carried out on 17 May 2004 and now the same was donerecently.Then these biggies go for a vacation for two to three months and start playing the game all over again.

Now you would have learnt that money can buy you big money in the markets.There is a saying\theory that money cannot buy everything.I agree with it but the above example is contrary to that theory.Markets are a place where the power of money makes its presence felt now and then.It is then you learn that markets are not an easy place to be in.They lure you with exciting money but then one fine day they just empty your coffers,if you are greedy.

Posted in Stocks, Training | Leave a Comment »

Bankpro Training

Posted by arajesh on April 1, 2008

Posted in Training | Leave a Comment »