wiki:Docs/Prog/Manual/ApplicationLibraries/lib825mssql

Version 8 (modified by Don Wilson, 4 days ago) ( diff )

--

Library for Microsft SQL Server database support (lib825mssql)

Comming Soon

lib825mssql provides a CDBMSSQL class inherited from class CDB in lib825db to facilitate apps also being able to use common code for Microsoft SQL databases.

Note this library provides client connectivity. The database will have to be hosted on a SQL Server instance running on a Windows PC or server.

This example shows database startup code to have an app support SQLite, MySQL, or SQL Server:

CAppDatabaseCfg appDBcfg;
string path = appDataPath + CFGFILE_DB;
appDBcfg.SetArchiveFilepath(path);
appDBcfg.ReadConfig();

if(appDBcfg.GetDBType() == CAppDatabaseCfg::appDataMySQL) {
   appDB = new CDBMySQL(appDBcfg.GetServer(), appDBcfg.GetUser(), appDBcfg.GetPassword(), appDBcfg.GetDatabase());
} else if(appDBcfg.GetDBType() == CAppDatabaseCfg::appDataMSSQL) {
   appDB = new CDBMSSQL(appDBcfg.GetServer(), appDBcfg.GetUser(), appDBcfg.GetPassword(), appDBcfg.GetDatabase());
} else {
   appDB = new CDBSQLite("/mnt/nand/apps/<appdir>/myapp.db3");
}

if(appDB->OpenDatabase() == false) {
   DEBUG_MSG("Error [%s]\n", appDB->GetErrorMsg().c_str());
   DrawErrorBox("Cannot open database", 4);
}

CAppDatabaseCfg is not part of lib825db. This code is in the ID Storage app to provide a user interface and load/save database configuration. The files appdatabase.cpp and appdatabase.h may be copied from ID Storage for your own apps and customized if desired.

This instantiates a CDBMySQL object for MySQL, a CDBMSSQL object for SQL Server, or a CDBSQLite object for SQLite based on the configuration. The created object is assigned to the pointer CDB* appDB.

        if(dynamic_cast<CDBMSSQL*>(appDB)) {
                sql = "IF OBJECT_ID('dbo.axleTrans', 'U') IS NULL BEGIN CREATE TABLE axleTrans (";
        } else {
                sql = "CREATE TABLE IF NOT EXISTS axleTrans (";
        }

                        if(dynamic_cast<CDBMySQL*>(appDB)) {
                                sql +=  "id INTEGER PRIMARY KEY AUTO_INCREMENT,";
                        } else if(dynamic_cast<CDBMSSQL*>(appDB)) {
                                sql += "id INTEGER IDENTITY(1,1) PRIMARY KEY,";
                        } else {
                                sql += "id INTEGER PRIMARY KEY,"; // SQLite: INTEGER PRIMARY KEY aliases ROWID and auto-increments
                        }
                        sql +=
                                "cost TEXT," // amount of this transaction
                                "pmt_type TEXT," // CASH if cash, else CREDIT if Account customer
                                "badge TEXT," // Badge ID (if CREDIT)
                                "customer TEXT,"; // The customer name (if CREDIT)

                        for(n = 0; n < MAX_DB_AXLES; n++) {
                                sql += "axle" + to_string(n + 1) + " REAL,";
                        }

                        sql += "grossT REAL" // Total wt (sum of wts)
                                ",datetm DATETIME"
                                ");";
        if(dynamic_cast<CDBMSSQL*>(appDB)) {
                sql += " END";
        }

                if(appDB->Execute(sql) == false) {
                        DrawErrorBox("Error creating transaction table", 2);
                }

Attachments (2)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.