Borland C++ 5.5.1 for Win32 und SQL
-
Hi,
ich benutze den Borland C++ 5.5.1 for Win32.
Dieses Beispiel:#include <windows.h> #include <sql.h> #include <sqlext.h> #include <stdio.h> int main(void) { HENV hEnv = NULL; // Env Handle from SQLAllocEnv() HDBC hDBC = NULL; // Connection handle HSTMT hStmt = NULL; // Statement handle UCHAR szDSN[SQL_MAX_DSN_LENGTH] = "dbtest"; // Data Source Name buffer UCHAR* szUID = NULL; // User ID buffer UCHAR* szPasswd = NULL; // Password buffer UCHAR szModel[128]; // Model buffer SDWORD cbModel; // Model buffer bytes recieved UCHAR szSqlStr[] = "Select * From test"; // SQL string RETCODE retcode; // Return code // Allocate memory for ODBC Environment handle SQLAllocEnv (&hEnv); // Allocate memory for the connection handle SQLAllocConnect (hEnv, &hDBC); // Connect to the data source "db97" using userid and password. retcode = SQLConnect (hDBC, szDSN, SQL_NTS, szUID, SQL_NTS, szPasswd, SQL_NTS); if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) { // Allocate memory for the statement handle retcode = SQLAllocStmt (hDBC, &hStmt); // Prepare the SQL statement by assigning it to the statement handle retcode = SQLPrepare (hStmt, szSqlStr, sizeof (szSqlStr)); // Execute the SQL statement handle retcode = SQLExecute (hStmt); // Project only column 1 which is the models SQLBindCol (hStmt, 1, SQL_C_CHAR, szModel, sizeof(szModel), &cbModel); // Get row of data from the result set defined above in the statement retcode = SQLFetch (hStmt); while (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) { printf ("\t%s\n", szModel); // Print row (model) retcode = SQLFetch (hStmt); // Fetch next row from result set } // Free the allocated statement handle SQLFreeStmt (hStmt, SQL_DROP); // Disconnect from datasource SQLDisconnect (hDBC); } // Free the allocated connection handle SQLFreeConnect (hDBC); // Free the allocated ODBC environment handle SQLFreeEnv (hEnv); return 0; }
stellt eine Verbindung zu einer Access Datenbank her
und setzt ein SQL-Statement ab. Soweit so gut.
Im Visual C++ funktioniert es.
Beim Borland Compiler bekomme ich folgende Fehler:Error: Unresolved external 'SQLAllocEnv' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\WIN\DESKTOP\DB.OBJ Error: Unresolved external 'SQLAllocConnect' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\WIN\DESKTOP\DB.OBJ Error: Unresolved external 'SQLConnect' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\WIN\DESKTOP\DB.OBJ Error: Unresolved external 'SQLAllocStmt' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\WIN\DESKTOP\DB.OBJ Error: Unresolved external 'SQLPrepare' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\WIN\DESKTOP\DB.OBJ Error: Unresolved external 'SQLExecute' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\WIN\DESKTOP\DB.OBJ Error: Unresolved external 'SQLBindCol' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\WIN\DESKTOP\DB.OBJ Error: Unresolved external 'SQLFetch' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\WIN\DESKTOP\DB.OBJ Error: Unresolved external 'SQLFreeStmt' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\WIN\DESKTOP\DB.OBJ Error: Unresolved external 'SQLDisconnect' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\WIN\DESKTOP\DB.OBJ Error: Unresolved external 'SQLFreeConnect' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\WIN\DESKTOP\DB.OBJ Error: Unresolved external 'SQLFreeEnv' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\WIN\DESKTOP\DB.OBJ
Hat jemand eine Idee warum????
-
Wahrscheinlich linkst Du eine Library oder eine Objektdatei nicht mit in Dein Programm. Schau' Dir einfach noch einmal die Dateiliste im VC an, die zu dem Projekt gehört. Alle diese Dateien müssen dann auch mit dem BCC kompiliert/gelinkt werden.
-
Es ist nur eine Datei, die ich oben
gepostet habe. Die habe ich db.cpp genannt.
Wenn ich sie in den VC++ lade und compiliere
tut es. Wenn ich sie mit dem Borland compiliere
bekomme ich die o.g. Fehler...Noch jemand eine Idee?
-
Original erstellt von Robby:
Noch jemand eine Idee?JA! du musst eine bestimmte Library linken!
-
Original erstellt von Shade Of Mine:
JA! du musst eine bestimmte Library linken!Super, und welche? und wie mach ich das im bcc?
-
Also ... eine kleine Suche in Google hat ergeben, dass die Funktionen, die der BCC nicht finden kann, in der ODBC32.DLL implementiert sind.
Also hab ich die Datei mit dem Befehl 'IMPLIB' des Borland-Compilers in eine Library umgewandelt:
implib odbc.lib odbc32.dll
Und mit
bcc32 odbc.lib sql.c
kann man das dann übersetzen... (sql.c ist der obige Quelltext) ...
-
Original erstellt von mady:
**Also ... eine kleine Suche in Google hat ergeben, dass die Funktionen, die der BCC nicht finden kann, in der ODBC32.DLL implementiert sind.**
Das hat google mir gerade eben auch gesagt.
Hab es ausprobiert und es funktioniert.
DANKE!