Embedded SQL und Visual Studio .NET
- Dieses Thema hat 1 Antwort und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 17 Jahre, 10 Monaten von
Anonym.
-
AuthorPosts
-
11. November 2005 um 20:29 Uhr #2630
AnonymGasthallo,
ich wollte nur in einem sehr einfachem c programm ein connect zu einer
datenbank aufbauen, vorerst ohne irgendwelchen abfragen oder sonstiges.aber leider gelingt mir das nicht 🙁
ich habe mit dem text editor folgende main.sqc datei erstellt:
# include <stdio.h>
# include <string.h>
# include <sql.h>
int main( int argc, char *argv[])
{
// host variablen
exec sql begin declare section;
char userID[11];
char userPWD[11];
exec sql end declare section;
strcpy( userID, "id");
strcpy( userPWD, "pwd");
// verbindungsaufbau
exec sql connect to sample user :userID using :userPWD;
// "fehlerbehamdlung" ...
if( SQLCODE != 0)
printf("verbindung :-(");
else
printf("verbindung :-)");
// disconnect anweisung
exec sql disconnect sample;
}
dann habe ich mit dem ibm db2 Befehlszeilenprozessor folgenden befehl ausgeführt:
db2 prep c:sqlmain.sqc bindfile
nun wurde mir eine main.c datei angelegt und dann habe ich ein neues, leeres
win32 projekt als konsoleanwendung angelegt und die main.c in den
arbeitsordner kopiert (mit der main.sqc) und dann die main.c datei dem projekt
hinzugefügt und dann versucht diese datei bzw. das projekt zu compilieren,
ging natürlich leider voll daneben…die main.c datei fängt so an:
static char sqla_program_id[162] =
{
42,0,65,68,65,75,65,73,77,65,73,78,32,32,32,32,70,65,56,122,
79,76,76,86,48,49,49,49,49,32,50,32,8,0,69,82,72,65,78,32,
32,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0
};
#include "sqladef.h"
und meine fehlermeldung heißt dann natürlich auch:
fatal error C1083: Include-Datei kann nicht geöffnet werden: ’sqladef.h‘: No such file or directorydiese header datei befindet sich bei mir in dem ordner:
C:ProgrammeIBMSQLLIBinclude
und deise sqladef.h greift auf eine andere sql header datei zu:
#include "sqlsystm.h" /* System dependent defines */
wenn ich jetzt nun die sqladef.h in meinen arbeitsordner kopieren würde
und diese dann dem projekt hinzufügen würde, würde ich dann ja wohl nicht
gerade viel erreichen, außer dass ich immer wieder einen neuen fehler
hervorrufen würde…und außerdem würde dann bei mir noch eine zusätzliche frage auftauchen:
wie sieht es dann mit den *.lib dateien aus???
aber wahrscheinlich sind noch ganz bestimmt einige andere fragen zu klären…ich weiß jetzt leider nicht wie ich weiter vorgehen muss/soll und entschuldige
mich erst mal bei euch das meine frage so "groß" ausgefallen ist, sorry!
13. November 2005 um 12:11 Uhr #3053
AnonymGastHallo!
Ich habe Deine Problemstellung nur ueberflogen. Dazu ein Auszug wie meine C-Programme mit einer Verbindung zur DB2 standardmaessig aufgebaut sind:
/* C-Header */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>/* SQL-Header */
#include <sql.h>
#include <sqlenv.h>
#include <sqlcodes.h>/* Signalhandler installieren */
sqleisig(&sqlca);/* DB-Verbindung herstellen */
/* Make-File fuer Uebersetzung schaut bei mir folgendermassen aus */
MODE=DEBUG
!IF "$(MODE)" == "DEBUG"
CFLAGS=-c -Ti -W3
LINKFLAGS=/DEBUG /ST:64000 /PM:VIO
!ELSE
CFLAGS=-c -W3
LINKFLAGS=/ST:64000 /PM:VIO
!ENDIF.all:
.PROGRAMM.EXE
PROGRAMM.MAK.SUFFIXES:
.SUFFIXES: .c .SQC
.SQC.c:
db2 prep %s DATETIME EUR PACKAGE BINDFILE // beim prep ist es wichtig die DATETIME anzugeben.c.obj:
icc $(CFLAGS) %s.PROGRAMM.EXE:
.PROGRAMM.obj
{$(LIB)}db2api.lib
PROGRAMM.MAK
icc.exe @<<
/B" $(LINKFLAGS)"
/FePROGRAMM.EXE
db2api.lib
..dbDB.obj // abhaengige objekts
.PROGRAMM.obj
<<.PROGRAMM.c:
PROGRAMM.SQC
PROGRAMM.MAK.PROGRAMM.obj:
.PROGRAMM.c
PROGRAMM.MAKWeiterhin viel Erfolg.
Liebe Gruesse
Lydia
-
AuthorPosts
You must be logged in to reply to this topic.