This project is for those who are good in database programming and, in particular, those who have experience in writing OLE DB providers.
I want the source code of a sample OLE DB provider. It should be written in C++ using ATL (no MFC please). The provider should implement IColumnsRowset in order to support updating through CCE (client cursor engine). You need to implement IColumnsRowset::GetAvailableColumns and IColumnsRowset::GetColumnsRowset. GetAvailableColumns should return return at least the following three optional meta data columns:
Base table column name (DBCOLUMN_BASECOLUMNNAME)
Base table name (DBCOLUMN_BASETABLENAME)
Base table schema name (DBCOLUMN_BASESCHEMANAME)
Base table catalog name (DBCOLUMN_BASECATALOGNAME)
Key or non-key column status (DBCOLUMN_KEYCOLUMN)
GetColumnsRowset should return a rowset in which these meta data columns contain valid information.
You should implement the above plus whatever else is needed in order to support update through CCE.
As MSDN says, Update properties can be gathered in one of the following ways:
1. Using the OLE DB IColumnsRowset interface
2. Parsing the SQL statement that was used to create the rowset
I want the first one. You should write such a sample OLE DB provider. The provider need not be full fledged. It is fine even if it is very crude so long it allows updating of data. You can assume any database. If you want, you can even assume a simple text file.
You should give the following:-
1. Source code of an OLE DB provider with above-mentioned features written in ATL.
2. Source code after converting the above into Visual Studio 2005 (along with what steps you followed to do the conversion).
3. A simple VB or C++ test case to test the above two.
I again repeat. The code need not be of release quality. It can be crude. It is only to act as sample for educational purpose in an introductory class. But it must work properly at least in the following test case:-
Execute a Select query to get one or more columns. Do not use key column as one of the columns and also do not use Select * (because key column will be included in *).
Get recordet after executing the above query.
Through the recordset try to update the value in any one column in any one row.
You do not need to wait to finish the complete work before giving me the files. You can give in steps.
Note: I can easily increase the budget if required. But the project must finish fast.