/* SAP-DB eSQL/C connect example Code in C from http://sapdb.automatix.de/ */ #include #include #include #include #include #include #include #include #include /** Funktion: db_connect(char *user, password, char *db, char *server) Anmelden an die Kran Datenbank (Version Adabas D) Das Programm meldet sich mit *user,*password an die laufende Datenbank *db auf Rechner *server an. Return: 0, alles ok, Verbindung steht -1, Problem, ging nicht Author: (c) 1997 AutomatiX GmbH, G. Janssen */ int db_connect (char *us, char *pw, char *serverdb, char *servernode, char *errstr) { int len; exec sql begin declare section; char *password; char *user; char SERVERDB[19]; char SERVERNODE[65]; exec sql end declare section; user=us; password=pw; strcpy(errstr,"OK"); len= strlen(serverdb); if(len <1 || len >18) { snprintf(errstr, 80, "Ungültige ServerDB-Angabe (%s) 1...18 Zeichen", serverdb); return -1; } strcpy(SERVERDB, serverdb); if (!servernode) strcpy(SERVERNODE, "localhost"); else { len= strlen (servernode); if (len <1 || len >64) { snprintf(errstr, 80, "Ungültige ServerNode-Angabe (%s) 1...18 Zeichen", servernode); return -1; } else strcpy(SERVERNODE, servernode); } exec sql set serverdb :SERVERDB on :SERVERNODE; if(sqlca.sqlcode) { sprintf(errstr, "set serverdb (%ld): %s", sqlca.sqlcode, sqlca.sqlerrmc); return -1; } exec sql connect :user identified by :password isolation level 0; if (sqlca.sqlcode) { sprintf(errstr, "connect (%ld): %s", sqlca.sqlcode, sqlca.sqlerrmc); return -1; } /* Alles in Ordnung, connect hergestellt */ return 0; } /** Funktion: ABMELDEN Programm von der Kran Datenbank (Version Adabas D) abmelden Return: 0, alles ok, Verbindung getrennt Author: (c) 1997 AutomatiX GmbH, G. Janssen */ int db_release (void) { exec sql commit release; return 0; } int main(int argc, char **argv) { char *errstr; int ret; errstr = calloc(4096, sizeof(char)); // ret = db_connect("JOJO", "FREI", "MODELL", "PC3", errstr); ret = db_connect("JOJO", "FREI", "AX", "server", errstr); if(ret==0) { printf("Alles Klar, Verbindung %s/OK\n",errstr); db_release(); } else { printf("Verbindung nicht hergestellt: %s\n",errstr); } return(0); }