SOL9 2.0 Sample: BookmarksApplet

SOL9 2.0 Samples

1 Screenshot


2 Source code

/*
 * BookmarksApplet.cpp 
 * Copyright (c) 2009 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL9
// 2009/05/28
// Assumes that environment of SQL Server 2008 and SQLClient1.0 
// Please create a database 'Sample' for this example
// and following table 'Person'.
/*
CREATE TABLE Person(
UserId int,
Telephone varchar(128),
Email varchar(255),
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City    varchar(255));
*/

#include <sol/sql/ADOApplet.h>

namespace SOL {

class BookmarksApplet: public ADOApplet {

public:
    /**
     * Constructor
     */
    BookmarksApplet(int argc, const TCHAR** argv)
        :ADOApplet(argc, argv)
    {
    }

public:
    ~BookmarksApplet()
    {
    }

public:
    /**
     * BookmarksApplet main procedure
     */
    virtual void run()
    {
        printf("1 Start\n");
        ADOConnection connection = getConnection();

        //SQL statement: select 
        _bstr_t query("SELECT * FROM SolUser");

        ADORecordset recordset;
        recordset.createInstance();

        printf("2 Try to recordset.open()\n");

        recordset.open(query, connection.getConnectionPtr(),
            ADODB::adOpenStatic, ADODB::adLockReadOnly, ADODB::adCmdText);
        printf("3 OK, recordset.open(\"%S\")\n", (const wchar_t*)query);
        
        long count = recordset.getRecordCount();
        printf("4 RecordCount=%ld\n", count);

        srand((unsigned)time(NULL));
        long position = rand() % count; 
    
        //Move to a some position 
        recordset.move(position, _variant_t((short)ADODB::adBookmarkFirst) );
        printf("5 OK, recordset.move(%ld)\n", position);

        _variant_t bookmark1 = recordset.getBookmark();
        printf("6 OK, recordset.getBookmark()\n");

        recordset.moveFirst();
        
        long i = 0L;
        while(!recordset.getadoEOF()){
            try {
                _variant_t bookmark2 = recordset.getBookmark();

                ADODB::CompareEnum result = recordset.compareBookmarks(
                    bookmark1, bookmark2);
                if (result == ADODB::adCompareEqual) {
                    ADOEnumNames names;
                    const char* compared = names.getName(result);
                    printf("7 Comapred Bookmarks matched %ld %ld = %s\n", i, position, compared);
                }
            } catch (...) {
                printf("Exception: Simply ignore it here\n");
            }
            i++;
            recordset.moveNext();
        }
    }
};

}

// Console application starts here.
void _tmain(int argc, const TCHAR** argv)
{
    try {
        BookmarksApplet bookmarksApplet(argc, argv);
        bookmarksApplet.start();

    } catch(Exception& ex){
        ex.dump();
    } catch(...){
        printf("Exception:Unknown\n");
    }
}


Last modified: 11 Nov 2009

Copyright (c) 2009 Antillia.com ALL RIGHTS RESERVED.