From an ASP.NET perspective is it common to layer the database integration like this for example:

Db access layer
Performs raw queries and handles the connection and other low level functions. If this was a class, it would probably not need any changes if you implemented it to another application, simply because the next layer does the app specific stuff.

Db 'abstraction'/app interface layer
Higher level functions which interface between the front end and db access layer. Contains app specific functions like getProducts().

Cheers
Chris