Connect to CDB#

See also

Visual Basic for Applications - Examples

Problem Description#

To connect to the CDB, the project must be configured (see Configure project). The example below shows how to connect to the CDB.

Problem Solution#

An example can be found by following:

C:\<sofistik_installation>\2023\SOFiSTiK 2023\interfaces\examples\c++\connect_to_cdb

The folder contains:

  • connect_to_cdb.sln (folder)

  • connect_to_cdb_vcxproj

  • main.cpp

Open the Visual Studio Solution .sln and change the fileName path in the main.cpp

char* fileName = "S:\\test\\cdbPath.cdb";
C++ - Connect to CDB#
int main()
{
   // In this example debug 64bit dlls are used (Visual Studio Platform 64bit)

   // Connect to CDB
   // int sof_cdb_init  ( char* FileName, int Index);

   /*
   Index = 0     initialise CDBASE and open scratch data base only
   Index > 0     open an existing data base with exactly tis index
                        (STATUS=UNKNOWN) = somehow obsolete call, use 99!
   Index = 99    test if NAME is a valid database and open the base
                        if possible. Return with the assigned index.
                        If the file does not exist, it will be created.
   Index = 97    open the database via pvm
                        Return with the assigned index.
   Index = 96    open a scratch database, filename is the path to
                        use or NULL.
   Index = 95    open in read-only mode
   Index = 94    create a new data base (STATUS=NEW)
   */
   int index = 99;
   char* fileName = "S:\\test\\cdbPath.cdb";
   int ie = sof_cdb_init(fileName, index);
   if (ie < 0)
   {
      cout << "ERROR: Index= " << ie << " < 0 - see clib1.h for meaning of error codes" << endl;
      cout << "Press any <key> to close the program";
      system("pause");
      return(0);
   }
   else if(ie == 0)
   {
      cout << "ERROR: Index= " << ie << " - The File is not a database" << endl;
      cout << "Press any <key> to close the program";
      system("pause");
      return(0);
   }

   // Get Status
   // int sof_cdb_status  (int ie);
   cout << "The CDB Status: " << sof_cdb_status(ie) << endl;

   // Close the CDB
   // int sof_cdb_close  (int ie);
   sof_cdb_close(0);
   cout << "The CDB Status after closing: " << sof_cdb_status(ie) << endl;

   system("pause");
   return 0;
}