When developing web applications an infraestructure to access the database is needed. In other words, a piece to connect the bussines logic to the database, to invoke the stored procedures (SP) that works with data. This layer has to be easy to work with, automated at maximum to avoid messing with the boring task of building the parameter list of the SPs by hand (a process also prone to errors). For this reason I've build the clsData.
clsData is the principal class of the data layer, it holds all of the methods to acces the database. It invokes the SPs, but as every SP has different parameters, other clases creates the definition for those parameters and inherite from clsData to add the methods to invoke the SPs.
So, clsData has the methods to acces and other clases that use inheritance has the definition needed to fill the methods of clsData. For this reason clsData has the declaration of the variables that later the other classes will initialize with the correct values. Those variables, in fact, are lists of objects that has information to build a SQL parameter. First of all I use a simple class to store type information (and when I say type I'm refering to database type), the DBType class.