PDA

View Full Version : [C++] Interagire con Database MS Access da DevCpp


AlexanderPD
22-08-2007, 07:20
Salve a tutti!
Ho la necessità di dover prendere dei dati da un database realizzato in MS Access usando però C++.
L'operazione è semplice, c'è una tabella con 2 campi e devo riordinarli e smistarli a seconda dei valori in tali campi.
Il mio problema ora è riuscire ad ottenere però questi dati! Googlando in giro ho trovato varie guide che spiegano come farlo in Visual C++, che però io non posso usare. Dalla mia ho solo il DevCpp e molto tempo da perderci :P
Nelle varie guide che ho trovato c'è una cosa che si ripete piuttosto spesso, ovvero l'import della libreria ADO in C++ tramite questa riga di codice:

#import "C:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")

Ho aggiustato il path, però (anche giustamente direi) il povero compilatore non sà come utilizzare una dll già bella compilata ed in fase di compilazione mi dà tonnellate di errori.
Insomma.. vorrei sapere se ho modo di importare questa dll e se quella che stò percorrendo è la strada giusta per raggiungere il mio obiettivo :P

Grazie in anticipo a tutti!
Ciauz!

AlexanderPD
23-08-2007, 08:00
up

cionci
23-08-2007, 09:38
Secondo me se vuoi usare ADO con Dev-C++ (più che altro per il compilatore MingW32) non riuscirai a fare niente. IMHO ti conviene usare il compilatore Intel. Per fare queste cose queste conviene installarti Visual C++ Express (gratuito) e scarichi il Win32 Platform SDK (gratuito anche questo).
In alternativa, con Dev-C++, puoi usare questa libreria: http://www.sqlapi.com/
Dopo basta accedere al database di Accesss tramite ODBC.

AlexanderPD
23-08-2007, 10:02
Grazie mille per la risposta!
purtroppo però non ho la possibilità di scaricare nulla di così grande :(
Ora mi trovo a fare uno stage in una azienda e devo realizzare un programma in C++ che visualizza il risultato di 2 query da un database di access..
ho a mia disposizione solamente il Dev-Cpp e il pacchetto office.. ho già provato a procurarmi altri strumenti di realizzazione (all'inizio speravo di usare java, ma le aziende devono pagare la licenza per usarlo >__> ) con scarsi risultati :(
Insomma, sono obbligato ad usare gli strumenti attuali.

Cmq mi sono informato e sul DevCpp esiste una libreria chiamata libodbc32.a che dovrebbe fare al mio scopo :D
Anche se non uso ADO non importa, io devo raggiungere un obiettivo e non importa come :D
Il problema di libodbc32.a è che non trovo esempi o guide su come usarla, e l'unica che ho trovato non sembra aiutarmi molto :(
Possibile che con il Dev non abbia modo di vedere 2 query di access?

Grazie ancora!

cionci
23-08-2007, 10:20
Come ti ho detto puoi usare SQLAPI++ oppure come hai detto te puoi usare ODBC direttamente: http://msdn2.microsoft.com/en-us/library/ms714562.aspx
Dagli update di Dev-C++ devi scaricare il Win32 SDK/API (mi sembra che si chiami così) e cercare se sono presenti i seguenti header:

Odbcinst.h
Sql.h
Sqlext.h
Sqltypes.h
Sqlucode.h
Msdasql.h
Msdadc.h

Le api odbc sono molto complesse e molto poco supportate in quanto risalgono davvero a tanto tempo fa.

Qui trovi qualcosa: http://www.easysoft.com/developer/languages/c/odbc_tutorial.html

Ma attenzione:
This tutorial was designed on UNIX and we have assumed you are using UNIX too. However, all the C examples should work equally well on MS Windows and other operating systems with some minor alterations (e.g. including windows.h on MS Windows and making the appropriate compiler/linker changes).

Credo tu debba linkare libodbc32.a al tuo progetto che probabilmente verrà scaricata insieme all'update di dev-c++.

Devi usare anche una connection string appropriata: http://www.carlprothman.net/Default.aspx?tabid=90

AlexanderPD
23-08-2007, 11:10
mhh la vedo grigia veramente

non posso usare SQLAPI++ perchè sono a pagamento, cmq grazie per la segnalazione :D
Bhe mi hai dato tutto ciò che mi serve, spero di riuscirci! Grazie molte :)

cionci
23-08-2007, 11:14
La versione trial di SQLAPI++ è comunque completa e senza scadenza. Credo che faccia vedere uno splash screen solo alla prima connessione. Se si tratta di un programma ad uso interno va più che bene.

AlexanderPD
24-08-2007, 14:56
Hola ancora

non ci riesco ;_; stò provando ad usare le SQLAPI++ e questo è il mio codice:


#include <stdio.h> // for printf
#include <SQLAPI.h> // main SQLAPI++ header
#include <odbcAPI.h>

int main(int argc, char* argv[])
{
SAConnection con; // create connection object

try
{

con.Connect("Driver={Microsoft Access Driver (*.mdb)}; Dbq=C:\db.mdb;", "<mio user>", "<mia pass>", SA_Client_NotSpecified);

printf("We are connected!\n");

// Disconnect is optional
// autodisconnect will ocur in destructor if needed
con.Disconnect();

printf("We are disconnected!\n");
}
catch(SAException &x)
{
// SAConnection::Rollback()
// can also throw an exception
// (if a network error for example),
// we will be ready
try
{
// on error rollback changes
con.Rollback();
}
catch(SAException &)
{
}
// print error message
printf("%s\n", (const char*)x.ErrText());
}

return 0;
}


e questo è l'enorme codice di errore che ricevo:

Compilatore: Default compiler
Building Makefile: "C:\Documents and Settings\asd\Desktop\C++\Makefile.win"
Esecuzione di make...
make.exe -f "C:\Documents and Settings\asd\Desktop\C++\Makefile.win" all
g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"

In file included from C:/Dev-Cpp/include/./odbc_win32/sql.h:25,
from C:/Dev-Cpp/include/odbcAPI.h:12,
from main.cpp:6:
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:137: error: `HWND' does not name a type

C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:275: error: `DWORD' does not name a type
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:276: error: `WORD' does not name a type
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:277: error: `WORD' does not name a type
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:278: error: `BYTE' does not name a type

In file included from C:/Dev-Cpp/include/odbcAPI.h:13,
from main.cpp:6:
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:1682: error: `SQLHWND' has not been declared
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:1688: error: ISO C++ forbids declaration of `hwnd' with no type

C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2013: warning: `__stdcall__' attribute only applies to function types

C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2013: error: `LPWSTR' was not declared in this scope
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2013: error: `LPWSTR' was not declared in this scope
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2013: error: `DWORD' was not declared in this scope
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2013: error: initializer expression list treated as compound expression

C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2015: error: expected constructor, destructor, or type conversion before "TraceReturn"
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2015: error: expected `,' or `;' before "TraceReturn"
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2016: error: expected constructor, destructor, or type conversion before "TraceVersion"
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2016: error: expected `,' or `;' before "TraceVersion"
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2023: warning: `__stdcall__' attribute only applies to function types
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2023: error: `DWORD' was not declared in this scope
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2033: error: expected constructor, destructor, or type conversion before "ODBCSetTryWaitValue"
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2033: error: expected `,' or `;' before "ODBCSetTryWaitValue"
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2034: error: expected constructor, destructor, or type conversion before "ODBCGetTryWaitValue"
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2034: error: expected `,' or `;' before "ODBCGetTryWaitValue"
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2044: error: ISO C++ forbids declaration of `GUID' with no type
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2044: error: expected `;' before '*' token
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2045: error: `DWORD' does not name a type
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2047: error: ISO C++ forbids declaration of `WCHAR' with no type
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2047: error: expected `;' before '*' token
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2048: error: ISO C++ forbids declaration of `CHAR' with no type
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2048: error: expected `;' before '*' token

C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2051: error: ISO C++ forbids declaration of `WCHAR' with no type
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2051: error: expected `;' before '*' token

C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2052: error: ISO C++ forbids declaration of `CHAR' with no type
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2052: error: expected `;' before '*' token
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2056: error: expected constructor, destructor, or type conversion before "FireVSDebugEvent"
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2056: error: expected `,' or `;' before "FireVSDebugEvent"

In file included from C:/Dev-Cpp/include/sql.h:13,
from C:/Dev-Cpp/include/sqlext.h:7,
from C:/Dev-Cpp/include/./odbc_win32/sqlucode.h:20,

from C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2066,
from C:/Dev-Cpp/include/odbcAPI.h:13,
from main.cpp:6:
C:/Dev-Cpp/include/sqltypes.h:24: error: `PVOID' does not name a type
C:/Dev-Cpp/include/sqltypes.h:25: error: `PVOID' does not name a type
C:/Dev-Cpp/include/sqltypes.h:26: error: `PVOID' does not name a type
C:/Dev-Cpp/include/sqltypes.h:27: error: `PVOID' does not name a type
C:/Dev-Cpp/include/sqltypes.h:37: error: `PVOID' does not name a type
C:/Dev-Cpp/include/sqltypes.h:50: error: `HWND' does not name a type
C:/Dev-Cpp/include/sqltypes.h:88: error: redefinition of `struct tagDATE_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:149: error: previous definition of `struct tagDATE_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:92: error: conflicting declaration 'typedef int DATE_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:153: error: 'DATE_STRUCT' has a previous declaration as `typedef struct tagDATE_STRUCT DATE_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:92: error: declaration of `typedef int DATE_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:153: error: conflicts with previous declaration `typedef struct tagDATE_STRUCT DATE_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:92: error: declaration of `typedef int DATE_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:153: error: conflicts with previous declaration `typedef struct tagDATE_STRUCT DATE_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:93: error: redefinition of `struct tagTIME_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:160: error: previous definition of `struct tagTIME_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:97: error: conflicting declaration 'typedef int TIME_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:164: error: 'TIME_STRUCT' has a previous declaration as `typedef struct tagTIME_STRUCT TIME_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:97: error: declaration of `typedef int TIME_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:164: error: conflicts with previous declaration `typedef struct tagTIME_STRUCT TIME_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:97: error: declaration of `typedef int TIME_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:164: error: conflicts with previous declaration `typedef struct tagTIME_STRUCT TIME_STRUCT'

C:/Dev-Cpp/include/sqltypes.h:98: error: redefinition of `struct tagTIMESTAMP_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:171: error: previous definition of `struct tagTIMESTAMP_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:106: error: conflicting declaration 'typedef int TIMESTAMP_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:179: error: 'TIMESTAMP_STRUCT' has a previous declaration as `typedef struct tagTIMESTAMP_STRUCT TIMESTAMP_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:106: error: declaration of `typedef int TIMESTAMP_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:179: error: conflicts with previous declaration `typedef struct tagTIMESTAMP_STRUCT TIMESTAMP_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:106: error: declaration of `typedef int TIMESTAMP_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:179: error: conflicts with previous declaration `typedef struct tagTIMESTAMP_STRUCT TIMESTAMP_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:112: error: conflicting declaration 'SQL_IS_YEAR'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:194: error: 'SQL_IS_YEAR' has a previous declaration as `SQLINTERVAL SQL_IS_YEAR'
C:/Dev-Cpp/include/sqltypes.h:112: error: declaration of `SQL_IS_YEAR'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:194: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_YEAR'
C:/Dev-Cpp/include/sqltypes.h:112: error: conflicting declaration 'SQL_IS_MONTH'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:195: error: 'SQL_IS_MONTH' has a previous declaration as `SQLINTERVAL SQL_IS_MONTH'
C:/Dev-Cpp/include/sqltypes.h:112: error: declaration of `SQL_IS_MONTH'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:195: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_MONTH'

C:/Dev-Cpp/include/sqltypes.h:112: error: conflicting declaration 'SQL_IS_DAY'

C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:196: error: 'SQL_IS_DAY' has a previous declaration as `SQLINTERVAL SQL_IS_DAY'
C:/Dev-Cpp/include/sqltypes.h:112: error: declaration of `SQL_IS_DAY'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:196: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_DAY'
C:/Dev-Cpp/include/sqltypes.h:112: error: conflicting declaration 'SQL_IS_HOUR'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:197: error: 'SQL_IS_HOUR' has a previous declaration as `SQLINTERVAL SQL_IS_HOUR'
C:/Dev-Cpp/include/sqltypes.h:112: error: declaration of `SQL_IS_HOUR'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:197: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_HOUR'
C:/Dev-Cpp/include/sqltypes.h:113: error: conflicting declaration 'SQL_IS_MINUTE'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:198: error: 'SQL_IS_MINUTE' has a previous declaration as `SQLINTERVAL SQL_IS_MINUTE'
C:/Dev-Cpp/include/sqltypes.h:113: error: declaration of `SQL_IS_MINUTE'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:198: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_MINUTE'
C:/Dev-Cpp/include/sqltypes.h:113: error: conflicting declaration 'SQL_IS_SECOND'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:199: error: 'SQL_IS_SECOND' has a previous declaration as `SQLINTERVAL SQL_IS_SECOND'
C:/Dev-Cpp/include/sqltypes.h:113: error: declaration of `SQL_IS_SECOND'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:199: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_SECOND'
C:/Dev-Cpp/include/sqltypes.h:113: error: conflicting declaration 'SQL_IS_YEAR_TO_MONTH'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:200: error: 'SQL_IS_YEAR_TO_MONTH' has a previous declaration as `SQLINTERVAL SQL_IS_YEAR_TO_MONTH'
C:/Dev-Cpp/include/sqltypes.h:113: error: declaration of `SQL_IS_YEAR_TO_MONTH'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:200: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_YEAR_TO_MONTH'
C:/Dev-Cpp/include/sqltypes.h:113: error: conflicting declaration 'SQL_IS_DAY_TO_HOUR'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:201: error: 'SQL_IS_DAY_TO_HOUR' has a previous declaration as `SQLINTERVAL SQL_IS_DAY_TO_HOUR'
C:/Dev-Cpp/include/sqltypes.h:113: error: declaration of `SQL_IS_DAY_TO_HOUR'

C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:201: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_DAY_TO_HOUR'
C:/Dev-Cpp/include/sqltypes.h:114: error: conflicting declaration 'SQL_IS_DAY_TO_MINUTE'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:202: error: 'SQL_IS_DAY_TO_MINUTE' has a previous declaration as `SQLINTERVAL SQL_IS_DAY_TO_MINUTE'
C:/Dev-Cpp/include/sqltypes.h:114: error: declaration of `SQL_IS_DAY_TO_MINUTE'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:202: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_DAY_TO_MINUTE'
C:/Dev-Cpp/include/sqltypes.h:114: error: conflicting declaration 'SQL_IS_DAY_TO_SECOND'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:203: error: 'SQL_IS_DAY_TO_SECOND' has a previous declaration as `SQLINTERVAL SQL_IS_DAY_TO_SECOND'
C:/Dev-Cpp/include/sqltypes.h:114: error: declaration of `SQL_IS_DAY_TO_SECOND'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:203: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_DAY_TO_SECOND'
C:/Dev-Cpp/include/sqltypes.h:114: error: conflicting declaration 'SQL_IS_HOUR_TO_MINUTE'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:204: error: 'SQL_IS_HOUR_TO_MINUTE' has a previous declaration as `SQLINTERVAL SQL_IS_HOUR_TO_MINUTE'
C:/Dev-Cpp/include/sqltypes.h:114: error: declaration of `SQL_IS_HOUR_TO_MINUTE'

C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:204: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_HOUR_TO_MINUTE'

C:/Dev-Cpp/include/sqltypes.h:115: error: conflicting declaration 'SQL_IS_HOUR_TO_SECOND'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:205: error: 'SQL_IS_HOUR_TO_SECOND' has a previous declaration as `SQLINTERVAL SQL_IS_HOUR_TO_SECOND'
C:/Dev-Cpp/include/sqltypes.h:115: error: declaration of `SQL_IS_HOUR_TO_SECOND'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:205: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_HOUR_TO_SECOND'
C:/Dev-Cpp/include/sqltypes.h:116: error: conflicting declaration 'SQL_IS_MINUTE_TO_SECOND'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:207: error: 'SQL_IS_MINUTE_TO_SECOND' has a previous declaration as `SQLINTERVAL SQL_IS_MINUTE_TO_SECOND'
C:/Dev-Cpp/include/sqltypes.h:116: error: declaration of `SQL_IS_MINUTE_TO_SECOND'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:207: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_MINUTE_TO_SECOND'
C:/Dev-Cpp/include/sqltypes.h:116: error: conflicting declaration 'typedef enum SQLINTERVAL SQLINTERVAL'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:207: error: 'SQLINTERVAL' has a previous declaration as `typedef enum SQLINTERVAL SQLINTERVAL'
C:/Dev-Cpp/include/sqltypes.h:116: error: declaration of `typedef enum SQLINTERVAL SQLINTERVAL'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:207: error: conflicts with previous declaration `typedef enum SQLINTERVAL SQLINTERVAL'
C:/Dev-Cpp/include/sqltypes.h:116: error: declaration of `typedef enum SQLINTERVAL SQLINTERVAL'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:207: error: conflicts with previous declaration `typedef enum SQLINTERVAL SQLINTERVAL'
C:/Dev-Cpp/include/sqltypes.h:117: error: redefinition of `struct tagSQL_YEAR_MONTH'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:213: error: previous definition of `struct tagSQL_YEAR_MONTH'
C:/Dev-Cpp/include/sqltypes.h:120: error: conflicting declaration 'typedef int SQL_YEAR_MONTH_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:216: error: 'SQL_YEAR_MONTH_STRUCT' has a previous declaration as `typedef struct tagSQL_YEAR_MONTH SQL_YEAR_MONTH_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:120: error: declaration of `typedef int SQL_YEAR_MONTH_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:216: error: conflicts with previous declaration `typedef struct tagSQL_YEAR_MONTH SQL_YEAR_MONTH_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:120: error: declaration of `typedef int SQL_YEAR_MONTH_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:216: error: conflicts with previous declaration `typedef struct tagSQL_YEAR_MONTH SQL_YEAR_MONTH_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:121: error: redefinition of `struct tagSQL_DAY_SECOND'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:219: error: previous definition of `struct tagSQL_DAY_SECOND'
C:/Dev-Cpp/include/sqltypes.h:127: error: conflicting declaration 'typedef int SQL_DAY_SECOND_STRUCT'

C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:225: error: 'SQL_DAY_SECOND_STRUCT' has a previous declaration as `typedef struct tagSQL_DAY_SECOND SQL_DAY_SECOND_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:127: error: declaration of `typedef int SQL_DAY_SECOND_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:225: error: conflicts with previous declaration `typedef struct tagSQL_DAY_SECOND SQL_DAY_SECOND_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:127: error: declaration of `typedef int SQL_DAY_SECOND_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:225: error: conflicts with previous declaration `typedef struct tagSQL_DAY_SECOND SQL_DAY_SECOND_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:128: error: redefinition of `struct tagSQL_INTERVAL_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:228: error: previous definition of `struct tagSQL_INTERVAL_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:135: error: conflicting declaration 'typedef int SQL_INTERVAL_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:236: error: 'SQL_INTERVAL_STRUCT' has a previous declaration as `typedef struct tagSQL_INTERVAL_STRUCT SQL_INTERVAL_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:135: error: declaration of `typedef int SQL_INTERVAL_STRUCT'

C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:236: error: conflicts with previous declaration `typedef struct tagSQL_INTERVAL_STRUCT SQL_INTERVAL_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:135: error: declaration of `typedef int SQL_INTERVAL_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:236: error: conflicts with previous declaration `typedef struct tagSQL_INTERVAL_STRUCT SQL_INTERVAL_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:137: error: redefinition of `struct tagSQL_NUMERIC_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:260: error: previous definition of `struct tagSQL_NUMERIC_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:142: error: conflicting declaration 'typedef int SQL_NUMERIC_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:265: error: 'SQL_NUMERIC_STRUCT' has a previous declaration as `typedef struct tagSQL_NUMERIC_STRUCT SQL_NUMERIC_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:142: error: declaration of `typedef int SQL_NUMERIC_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:265: error: conflicts with previous declaration `typedef struct tagSQL_NUMERIC_STRUCT SQL_NUMERIC_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:142: error: declaration of `typedef int SQL_NUMERIC_STRUCT'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:265: error: conflicts with previous declaration `typedef struct tagSQL_NUMERIC_STRUCT SQL_NUMERIC_STRUCT'
C:/Dev-Cpp/include/sqltypes.h:153: error: redefinition of `struct tagSQLGUID'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:274: error: previous definition of `struct tagSQLGUID'
C:/Dev-Cpp/include/sqltypes.h:158: error: conflicting declaration 'typedef int SQLGUID'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:279: error: 'SQLGUID' has a previous declaration as `typedef struct tagSQLGUID SQLGUID'
C:/Dev-Cpp/include/sqltypes.h:158: error: declaration of `typedef int SQLGUID'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:279: error: conflicts with previous declaration `typedef struct tagSQLGUID SQLGUID'
C:/Dev-Cpp/include/sqltypes.h:158: error: declaration of `typedef int SQLGUID'
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:279: error: conflicts with previous declaration `typedef struct tagSQLGUID SQLGUID'
In file included from C:/Dev-Cpp/include/./odbc_win32/sqlucode.h:20,
from C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2066,
from C:/Dev-Cpp/include/odbcAPI.h:13,
from main.cpp:6:
C:/Dev-Cpp/include/sqlext.h:1184: error: `SQLHWND' has not been declared
C:/Dev-Cpp/include/sqlext.h:1203: error: expected constructor, destructor, or type conversion before "ODBCGetTryWaitValue"
C:/Dev-Cpp/include/sqlext.h:1203: error: expected `,' or `;' before "ODBCGetTryWaitValue"
C:/Dev-Cpp/include/sqlext.h:1204: error: expected constructor, destructor, or type conversion before "ODBCSetTryWaitValue"
C:/Dev-Cpp/include/sqlext.h:1204: error: expected `,' or `;' before "ODBCSetTryWaitValue"
C:/Dev-Cpp/include/sqlext.h:1205: error: redefinition of `RETCODE TraceOpenLogFile'
C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2013: error: `RETCODE TraceOpenLogFile' previously defined here
C:/Dev-Cpp/include/sqlext.h:1205: error: `LPWSTR' was not declared in this scope
C:/Dev-Cpp/include/sqlext.h:1205: error: `LPWSTR' was not declared in this scope

C:/Dev-Cpp/include/sqlext.h:1205: error: `DWORD' was not declared in this scope
C:/Dev-Cpp/include/sqlext.h:1207: error: expected constructor, destructor, or type conversion before "TraceReturn"
C:/Dev-Cpp/include/sqlext.h:1207: error: expected `,' or `;' before "TraceReturn"
C:/Dev-Cpp/include/sqlext.h:1208: error: expected constructor, destructor, or type conversion before "TraceVersion"
C:/Dev-Cpp/include/sqlext.h:1208: error: expected `,' or `;' before "TraceVersion"

In file included from C:/Dev-Cpp/include/sqlext.h:1214,
from C:/Dev-Cpp/include/./odbc_win32/sqlucode.h:20,
from C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2066,
from C:/Dev-Cpp/include/odbcAPI.h:13,
from main.cpp:6:

C:/Dev-Cpp/include/sqlucode.h:38: error: `SQLHWND' has not been declared
C:/Dev-Cpp/include/sqlucode.h:39: error: `SQLHWND' has not been declared

In file included from C:/Dev-Cpp/include/./odbc_win32/sqlext.h:2066,
from C:/Dev-Cpp/include/odbcAPI.h:13,
from main.cpp:6:
C:/Dev-Cpp/include/./odbc_win32/sqlucode.h:280: error: `SQLHWND' has not been declared
C:/Dev-Cpp/include/./odbc_win32/sqlucode.h:286: error: ISO C++ forbids declaration of `hwnd' with no type

C:/Dev-Cpp/include/./odbc_win32/sqlucode.h:647: error: `SQLHWND' has not been declared
C:/Dev-Cpp/include/./odbc_win32/sqlucode.h:653: error: ISO C++ forbids declaration of `hwnd' with no type

In file included from main.cpp:6:
C:/Dev-Cpp/include/odbcAPI.h:123: error: `SQLHWND' has not been declared
C:/Dev-Cpp/include/odbcAPI.h:129: error: ISO C++ forbids declaration of `hwnd' with no type

main.cpp:15:13: warning: unknown escape sequence '\d'

make.exe: *** [main.o] Error 1

Esecuzione terminata


in pratica non gli piace molto sqltypes.h, che cmq riesce a trovare.
Quale può essere il problema?
Andava installato qualcosa prima di provare ad usare le api?
in questo pc ho solo office, devcpp e le classiche cosette tipo paint, blocconote etc
odbc và installato in qualche modo?

Non sò + dove sbattere la testa :P

nel caso poi sarebbe possibile importare le dll di ado? Da quanto ho capito è possibile farlo solo dal Visual C++ ma se potessi usare Ado da qui finirei tutto il progetto in un giorno al massimo! Grazie mille anche stavolta ^^'
Ciauz!

cionci
24-08-2007, 15:00
Prova ad includere windows.h

AlexanderPD
24-08-2007, 15:42
provato ad includere windows.h.. stessi identici errori :(

cionci
24-08-2007, 16:45
Questi:

C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:137: error: `HWND' does not name a type

C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:275: error: `DWORD' does not name a type
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:276: error: `WORD' does not name a type
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:277: error: `WORD' does not name a type
C:/Dev-Cpp/include/./odbc_win32/sqltypes.h:278: error: `BYTE' does not name a type

se includi windows.h non te li può aver dati. L'hai incluso come primo nella lista degli include ?

AlexanderPD
25-08-2007, 10:47
bhe ho aggiunto #include <windows.h> in mezzo agli altri..
e gli errori sono gli stessi :(
non avrei mai pensato di avere tanti problemi per fare una cosa simile >_>

cionci
25-08-2007, 10:54
Devi metterlo come primo include. Hai scaricato il pacchetto di Dev-C++ per lavorare con le API di Windows ?

variabilepippo
25-08-2007, 11:05
bhe ho aggiunto #include <windows.h> in mezzo agli altri..

#include <windows.h> deve essere la PRIMA riga. Ho compilato con successo l'esempio di SQLAPI++ con MinGW (=il compilatore "sotto" Dev-C++). Non dimenticare di specificare le librerie SQLAPI e VERSION tra le opzioni del linker.

AlexanderPD
25-08-2007, 15:34
ammetto che ormai mi stò facendo una confusione incredibile in testa :P
dunque, mettere #include <windows.h> sulla prima stringa ha aiutato, la situazione si è mossa almeno
ora ho questo log sugli errori:


Compilatore: Default compiler
Building Makefile: "C:\Documents and Settings\Utente\Documenti\Makefile.win"
Esecuzione di make...
make.exe -f "C:\Documents and Settings\Utente\Documenti\Makefile.win" all
g++.exe -c Untitled1.cpp -o Untitled1.o -I"C:/Dev-CppBeta/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-CppBeta/include/c++/3.4.2/backward" -I"C:/Dev-CppBeta/include/c++/3.4.2/mingw32" -I"C:/Dev-CppBeta/include/c++/3.4.2" -I"C:/Dev-CppBeta/include"

In file included from C:/Dev-CppBeta/include/sql.h:13,
from C:/Dev-CppBeta/include/sqlext.h:7,
from C:/Dev-CppBeta/include/./odbc_win32/sqlucode.h:20,
from C:/Dev-CppBeta/include/./odbc_win32/sqlext.h:2066,
from C:/Dev-CppBeta/include/odbcAPI.h:13,
from Untitled1.cpp:4:
C:/Dev-CppBeta/include/sqltypes.h:88: error: redefinition of `struct tagDATE_STRUCT'

C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:149: error: previous definition of `struct tagDATE_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:92: error: conflicting declaration 'typedef int DATE_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:153: error: 'DATE_STRUCT' has a previous declaration as `typedef struct tagDATE_STRUCT DATE_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:92: error: declaration of `typedef int DATE_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:153: error: conflicts with previous declaration `typedef struct tagDATE_STRUCT DATE_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:92: error: declaration of `typedef int DATE_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:153: error: conflicts with previous declaration `typedef struct tagDATE_STRUCT DATE_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:93: error: redefinition of `struct tagTIME_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:160: error: previous definition of `struct tagTIME_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:97: error: conflicting declaration 'typedef int TIME_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:164: error: 'TIME_STRUCT' has a previous declaration as `typedef struct tagTIME_STRUCT TIME_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:97: error: declaration of `typedef int TIME_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:164: error: conflicts with previous declaration `typedef struct tagTIME_STRUCT TIME_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:97: error: declaration of `typedef int TIME_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:164: error: conflicts with previous declaration `typedef struct tagTIME_STRUCT TIME_STRUCT'

C:/Dev-CppBeta/include/sqltypes.h:98: error: redefinition of `struct tagTIMESTAMP_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:171: error: previous definition of `struct tagTIMESTAMP_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:106: error: conflicting declaration 'typedef int TIMESTAMP_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:179: error: 'TIMESTAMP_STRUCT' has a previous declaration as `typedef struct tagTIMESTAMP_STRUCT TIMESTAMP_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:106: error: declaration of `typedef int TIMESTAMP_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:179: error: conflicts with previous declaration `typedef struct tagTIMESTAMP_STRUCT TIMESTAMP_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:106: error: declaration of `typedef int TIMESTAMP_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:179: error: conflicts with previous declaration `typedef struct tagTIMESTAMP_STRUCT TIMESTAMP_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:112: error: conflicting declaration 'SQL_IS_YEAR'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:194: error: 'SQL_IS_YEAR' has a previous declaration as `SQLINTERVAL SQL_IS_YEAR'
C:/Dev-CppBeta/include/sqltypes.h:112: error: declaration of `SQL_IS_YEAR'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:194: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_YEAR'
C:/Dev-CppBeta/include/sqltypes.h:112: error: conflicting declaration 'SQL_IS_MONTH'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:195: error: 'SQL_IS_MONTH' has a previous declaration as `SQLINTERVAL SQL_IS_MONTH'
C:/Dev-CppBeta/include/sqltypes.h:112: error: declaration of `SQL_IS_MONTH'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:195: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_MONTH'
C:/Dev-CppBeta/include/sqltypes.h:112: error: conflicting declaration 'SQL_IS_DAY'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:196: error: 'SQL_IS_DAY' has a previous declaration as `SQLINTERVAL SQL_IS_DAY'
C:/Dev-CppBeta/include/sqltypes.h:112: error: declaration of `SQL_IS_DAY'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:196: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_DAY'
C:/Dev-CppBeta/include/sqltypes.h:112: error: conflicting declaration 'SQL_IS_HOUR'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:197: error: 'SQL_IS_HOUR' has a previous declaration as `SQLINTERVAL SQL_IS_HOUR'
C:/Dev-CppBeta/include/sqltypes.h:112: error: declaration of `SQL_IS_HOUR'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:197: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_HOUR'
C:/Dev-CppBeta/include/sqltypes.h:113: error: conflicting declaration 'SQL_IS_MINUTE'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:198: error: 'SQL_IS_MINUTE' has a previous declaration as `SQLINTERVAL SQL_IS_MINUTE'
C:/Dev-CppBeta/include/sqltypes.h:113: error: declaration of `SQL_IS_MINUTE'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:198: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_MINUTE'
C:/Dev-CppBeta/include/sqltypes.h:113: error: conflicting declaration 'SQL_IS_SECOND'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:199: error: 'SQL_IS_SECOND' has a previous declaration as `SQLINTERVAL SQL_IS_SECOND'
C:/Dev-CppBeta/include/sqltypes.h:113: error: declaration of `SQL_IS_SECOND'

C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:199: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_SECOND'
C:/Dev-CppBeta/include/sqltypes.h:113: error: conflicting declaration 'SQL_IS_YEAR_TO_MONTH'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:200: error: 'SQL_IS_YEAR_TO_MONTH' has a previous declaration as `SQLINTERVAL SQL_IS_YEAR_TO_MONTH'
C:/Dev-CppBeta/include/sqltypes.h:113: error: declaration of `SQL_IS_YEAR_TO_MONTH'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:200: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_YEAR_TO_MONTH'
C:/Dev-CppBeta/include/sqltypes.h:113: error: conflicting declaration 'SQL_IS_DAY_TO_HOUR'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:201: error: 'SQL_IS_DAY_TO_HOUR' has a previous declaration as `SQLINTERVAL SQL_IS_DAY_TO_HOUR'
C:/Dev-CppBeta/include/sqltypes.h:113: error: declaration of `SQL_IS_DAY_TO_HOUR'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:201: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_DAY_TO_HOUR'
C:/Dev-CppBeta/include/sqltypes.h:114: error: conflicting declaration 'SQL_IS_DAY_TO_MINUTE'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:202: error: 'SQL_IS_DAY_TO_MINUTE' has a previous declaration as `SQLINTERVAL SQL_IS_DAY_TO_MINUTE'
C:/Dev-CppBeta/include/sqltypes.h:114: error: declaration of `SQL_IS_DAY_TO_MINUTE'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:202: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_DAY_TO_MINUTE'

C:/Dev-CppBeta/include/sqltypes.h:114: error: conflicting declaration 'SQL_IS_DAY_TO_SECOND'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:203: error: 'SQL_IS_DAY_TO_SECOND' has a previous declaration as `SQLINTERVAL SQL_IS_DAY_TO_SECOND'
C:/Dev-CppBeta/include/sqltypes.h:114: error: declaration of `SQL_IS_DAY_TO_SECOND'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:203: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_DAY_TO_SECOND'
C:/Dev-CppBeta/include/sqltypes.h:114: error: conflicting declaration 'SQL_IS_HOUR_TO_MINUTE'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:204: error: 'SQL_IS_HOUR_TO_MINUTE' has a previous declaration as `SQLINTERVAL SQL_IS_HOUR_TO_MINUTE'
C:/Dev-CppBeta/include/sqltypes.h:114: error: declaration of `SQL_IS_HOUR_TO_MINUTE'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:204: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_HOUR_TO_MINUTE'
C:/Dev-CppBeta/include/sqltypes.h:115: error: conflicting declaration 'SQL_IS_HOUR_TO_SECOND'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:205: error: 'SQL_IS_HOUR_TO_SECOND' has a previous declaration as `SQLINTERVAL SQL_IS_HOUR_TO_SECOND'
C:/Dev-CppBeta/include/sqltypes.h:115: error: declaration of `SQL_IS_HOUR_TO_SECOND'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:205: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_HOUR_TO_SECOND'
C:/Dev-CppBeta/include/sqltypes.h:116: error: conflicting declaration 'SQL_IS_MINUTE_TO_SECOND'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:207: error: 'SQL_IS_MINUTE_TO_SECOND' has a previous declaration as `SQLINTERVAL SQL_IS_MINUTE_TO_SECOND'
C:/Dev-CppBeta/include/sqltypes.h:116: error: declaration of `SQL_IS_MINUTE_TO_SECOND'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:207: error: conflicts with previous declaration `SQLINTERVAL SQL_IS_MINUTE_TO_SECOND'
C:/Dev-CppBeta/include/sqltypes.h:116: error: conflicting declaration 'typedef enum SQLINTERVAL SQLINTERVAL'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:207: error: 'SQLINTERVAL' has a previous declaration as `typedef enum SQLINTERVAL SQLINTERVAL'
C:/Dev-CppBeta/include/sqltypes.h:116: error: declaration of `typedef enum SQLINTERVAL SQLINTERVAL'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:207: error: conflicts with previous declaration `typedef enum SQLINTERVAL SQLINTERVAL'
C:/Dev-CppBeta/include/sqltypes.h:116: error: declaration of `typedef enum SQLINTERVAL SQLINTERVAL'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:207: error: conflicts with previous declaration `typedef enum SQLINTERVAL SQLINTERVAL'
C:/Dev-CppBeta/include/sqltypes.h:117: error: redefinition of `struct tagSQL_YEAR_MONTH'

C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:213: error: previous definition of `struct tagSQL_YEAR_MONTH'
C:/Dev-CppBeta/include/sqltypes.h:120: error: conflicting declaration 'typedef int SQL_YEAR_MONTH_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:216: error: 'SQL_YEAR_MONTH_STRUCT' has a previous declaration as `typedef struct tagSQL_YEAR_MONTH SQL_YEAR_MONTH_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:120: error: declaration of `typedef int SQL_YEAR_MONTH_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:216: error: conflicts with previous declaration `typedef struct tagSQL_YEAR_MONTH SQL_YEAR_MONTH_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:120: error: declaration of `typedef int SQL_YEAR_MONTH_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:216: error: conflicts with previous declaration `typedef struct tagSQL_YEAR_MONTH SQL_YEAR_MONTH_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:121: error: redefinition of `struct tagSQL_DAY_SECOND'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:219: error: previous definition of `struct tagSQL_DAY_SECOND'
C:/Dev-CppBeta/include/sqltypes.h:127: error: conflicting declaration 'typedef int SQL_DAY_SECOND_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:225: error: 'SQL_DAY_SECOND_STRUCT' has a previous declaration as `typedef struct tagSQL_DAY_SECOND SQL_DAY_SECOND_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:127: error: declaration of `typedef int SQL_DAY_SECOND_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:225: error: conflicts with previous declaration `typedef struct tagSQL_DAY_SECOND SQL_DAY_SECOND_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:127: error: declaration of `typedef int SQL_DAY_SECOND_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:225: error: conflicts with previous declaration `typedef struct tagSQL_DAY_SECOND SQL_DAY_SECOND_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:128: error: redefinition of `struct tagSQL_INTERVAL_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:228: error: previous definition of `struct tagSQL_INTERVAL_STRUCT'

C:/Dev-CppBeta/include/sqltypes.h:135: error: conflicting declaration 'typedef int SQL_INTERVAL_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:236: error: 'SQL_INTERVAL_STRUCT' has a previous declaration as `typedef struct tagSQL_INTERVAL_STRUCT SQL_INTERVAL_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:135: error: declaration of `typedef int SQL_INTERVAL_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:236: error: conflicts with previous declaration `typedef struct tagSQL_INTERVAL_STRUCT SQL_INTERVAL_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:135: error: declaration of `typedef int SQL_INTERVAL_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:236: error: conflicts with previous declaration `typedef struct tagSQL_INTERVAL_STRUCT SQL_INTERVAL_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:137: error: redefinition of `struct tagSQL_NUMERIC_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:260: error: previous definition of `struct tagSQL_NUMERIC_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:142: error: conflicting declaration 'typedef int SQL_NUMERIC_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:265: error: 'SQL_NUMERIC_STRUCT' has a previous declaration as `typedef struct tagSQL_NUMERIC_STRUCT SQL_NUMERIC_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:142: error: declaration of `typedef int SQL_NUMERIC_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:265: error: conflicts with previous declaration `typedef struct tagSQL_NUMERIC_STRUCT SQL_NUMERIC_STRUCT'
C:/Dev-CppBeta/include/sqltypes.h:142: error: declaration of `typedef int SQL_NUMERIC_STRUCT'
C:/Dev-CppBeta/include/./odbc_win32/sqltypes.h:265: error: conflicts with previous declaration `typedef struct tagSQL_NUMERIC_STRUCT SQL_NUMERIC_STRUCT'

make.exe: *** [Untitled1.o] Error 1

Esecuzione terminata

quindi sembrerebbe la doppia dichiarazione di qualcosa..

riposto anche il mio sorgente giusto per togliere dubbi:


#include <windows.h>
#include <stdio.h> // for printf
#include <SQLAPI.h> // main SQLAPI++ header
#include <odbcAPI.h>

int main(int argc, char* argv[])
{
SAConnection con; // create connection object

try
{

con.Connect("Driver={Microsoft Access Driver (*.mdb)}; Dbq=db.mdb;", "", "", SA_Client_NotSpecified);

printf("We are connected!\n");

// Disconnect is optional
// autodisconnect will ocur in destructor if needed
con.Disconnect();

printf("We are disconnected!\n");
}
catch(SAException &x)
{
// SAConnection::Rollback()
// can also throw an exception
// (if a network error for example),
// we will be ready
try
{
// on error rollback changes
con.Rollback();
}
catch(SAException &)
{
}
// print error message
printf("%s\n", (const char*)x.ErrText());
}

return 0;
}

ancora non riesco ._. sempre + confusione in testa ._.

cionci
25-08-2007, 15:36
Togli questa: #include <odbcAPI.h>

AlexanderPD
25-08-2007, 16:09
ancora errori..


Compilatore: Default compiler
Building Makefile: "C:\Documents and Settings\Utente\Documenti\Makefile.win"
Esecuzione di make...
make.exe -f "C:\Documents and Settings\Utente\Documenti\Makefile.win" all
g++.exe -c Untitled1.cpp -o Untitled1.o -I"C:/Dev-CppBeta/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-CppBeta/include/c++/3.4.2/backward" -I"C:/Dev-CppBeta/include/c++/3.4.2/mingw32" -I"C:/Dev-CppBeta/include/c++/3.4.2" -I"C:/Dev-CppBeta/include"

g++.exe Untitled1.o Project_1_private.res -o "Project 1.exe" -L"C:/Dev-CppBeta/lib" -mwindows ../../../Dev-CppBeta/lib/libodbc32.a ../../../Dev-CppBeta/lib/libodbccp32.a

Untitled1.o(.text+0x7f):Untitled1.cpp: undefined reference to `SAConnection::SAConnection()'
Untitled1.o(.text+0x9c):Untitled1.cpp: undefined reference to `SAString::SAString(char const*)'
Untitled1.o(.text+0xc2):Untitled1.cpp: undefined reference to `SAString::SAString(char const*)'
Untitled1.o(.text+0xe8):Untitled1.cpp: undefined reference to `SAString::SAString(char const*)'
Untitled1.o(.text+0x120):Untitled1.cpp: undefined reference to `SAConnection::Connect(SAString const&, SAString const&, SAString const&, SAClient_t)'
Untitled1.o(.text+0x14f):Untitled1.cpp: undefined reference to `SAString::~SAString()'
Untitled1.o(.text+0x17e):Untitled1.cpp: undefined reference to `SAString::~SAString()'
Untitled1.o(.text+0x1ad):Untitled1.cpp: undefined reference to `SAString::~SAString()'
Untitled1.o(.text+0x1dc):Untitled1.cpp: undefined reference to `SAString::~SAString()'
Untitled1.o(.text+0x20b):Untitled1.cpp: undefined reference to `SAString::~SAString()'
Untitled1.o(.text+0x23a):Untitled1.cpp: more undefined references to `SAString::~SAString()' follow
Untitled1.o(.text+0x251):Untitled1.cpp: undefined reference to `SAConnection::Disconnect()'
Untitled1.o(.text+0x296):Untitled1.cpp: undefined reference to `SAConnection::Rollback()'
Untitled1.o(.text+0x2e2):Untitled1.cpp: undefined reference to `SAException::ErrText() const'
Untitled1.o(.text+0x2fa):Untitled1.cpp: undefined reference to `SAString::operator char const*() const'
Untitled1.o(.text+0x3b2):Untitled1.cpp: undefined reference to `SAString::~SAString()'
Untitled1.o(.text+0x3d5):Untitled1.cpp: undefined reference to `SAString::~SAString()'
Untitled1.o(.text+0x424):Untitled1.cpp: undefined reference to `SAConnection::~SAConnection()'
Untitled1.o(.text+0x451):Untitled1.cpp: undefined reference to `SAConnection::~SAConnection()'
collect2: ld returned 1 exit status

make.exe: *** ["Project] Error 1

Esecuzione terminata


Avevo incluso odbcAPI.h perchè avevo letto così sul sito delle sqlapi :(

variabilepippo
25-08-2007, 16:13
ancora errori..


Come ti ho suggerito devi linkare anche le librerie libsqlapi.a e libversion.a.

cionci
25-08-2007, 16:14
Negli esempi sul sito non c'è incluso...
Sei a posto, ora devi solo linkare i .a della libreria di SQLAPI al tuo progetto.

AlexanderPD
25-08-2007, 16:32
Grazie mille per la pazienza che avete dimostrato fin'ora! :D
Forse alla fine riuscirò veramente a fare stà cosa :D
cmq anche linkandole ho questi errori:


Compilatore: Default compiler
Building Makefile: "C:\Documents and Settings\Utente\Documenti\Makefile.win"
Esecuzione di make...
make.exe -f "C:\Documents and Settings\Utente\Documenti\Makefile.win" all
windres.exe -i Project_1_private.rc --input-format=rc -o Project_1_private.res -O coff

g++.exe Untitled1.o Project_1_private.res -o "Project 1.exe" -L"C:/Dev-CppBeta/lib" -mwindows ../../../Dev-CppBeta/lib/libsqlapi.a ../../../Dev-CppBeta/lib/libversion.a

Untitled1.o(.text+0x95):untitled1.cpp: undefined reference to `__get_eh_context'
Untitled1.o(.text+0xb2):untitled1.cpp: undefined reference to `SAConnection::SAConnection(void)'
Untitled1.o(.text+0xcf):untitled1.cpp: undefined reference to `SAConnection::~SAConnection(void)'
Untitled1.o(.text+0x125):untitled1.cpp: undefined reference to `SAString::SAString(char const *)'
Untitled1.o(.text+0x144):untitled1.cpp: undefined reference to `SAString::~SAString(void)'
Untitled1.o(.text+0x16c):untitled1.cpp: undefined reference to `SAString::SAString(char const *)'
Untitled1.o(.text+0x191):untitled1.cpp: undefined reference to `SAString::~SAString(void)'
Untitled1.o(.text+0x1c5):untitled1.cpp: undefined reference to `SAString::SAString(char const *)'
Untitled1.o(.text+0x1ea):untitled1.cpp: undefined reference to `SAString::~SAString(void)'
Untitled1.o(.text+0x221):untitled1.cpp: undefined reference to `SAConnection::Connect(SAString const &, SAString const &, SAString const &, SAClient_t)'
Untitled1.o(.text+0x249):untitled1.cpp: undefined reference to `SAString::~SAString(void)'
Untitled1.o(.text+0x271):untitled1.cpp: undefined reference to `SAString::~SAString(void)'
Untitled1.o(.text+0x296):untitled1.cpp: undefined reference to `SAString::~SAString(void)'
Untitled1.o(.text+0x2b5):untitled1.cpp: undefined reference to `SAConnection::Disconnect(void)'
Untitled1.o(.text+0x2f9):untitled1.cpp: undefined reference to `SAConnection::~SAConnection(void)'
Untitled1.o(.text+0x31d):untitled1.cpp: undefined reference to `__eh_rtime_match'
Untitled1.o(.text+0x32d):untitled1.cpp: undefined reference to `__start_cp_handler'
Untitled1.o(.text+0x3bd):untitled1.cpp: undefined reference to `__cp_pop_exception'
Untitled1.o(.text+0x3d1):untitled1.cpp: undefined reference to `__sjthrow'
Untitled1.o(.text+0x3df):untitled1.cpp: undefined reference to `__eh_rtime_match'
Untitled1.o(.text+0x3ef):untitled1.cpp: undefined reference to `__start_cp_handler'
Untitled1.o(.text+0x4b1):untitled1.cpp: undefined reference to `SAConnection::Rollback(void)'
Untitled1.o(.text+0x4dc):untitled1.cpp: undefined reference to `SAException::ErrText(void) const'
Untitled1.o(.text+0x4ff):untitled1.cpp: undefined reference to `SAString::~SAString(void)'
Untitled1.o(.text+0x522):untitled1.cpp: undefined reference to `SAString::operator char const *(void) const'
Untitled1.o(.text+0x55a):untitled1.cpp: undefined reference to `SAString::~SAString(void)'
Untitled1.o(.text+0x57b):untitled1.cpp: undefined reference to `__cp_pop_exception'
Untitled1.o(.text+0x588):untitled1.cpp: undefined reference to `__sjthrow'
Untitled1.o(.text+0x5e3):untitled1.cpp: undefined reference to `__cp_pop_exception'
Untitled1.o(.text+0x5fa):untitled1.cpp: undefined reference to `__sjthrow'
Untitled1.o(.text+0x653):untitled1.cpp: undefined reference to `__cp_pop_exception'
Untitled1.o(.text+0x66a):untitled1.cpp: undefined reference to `__sjthrow'
Untitled1.o(.text+0x671):untitled1.cpp: undefined reference to `__terminate'
Untitled1.o(.text+0x676):untitled1.cpp: undefined reference to `__terminate'
Untitled1.o(.text$__tf9saOptions[saOptions type_info function]+0x1d):untitled1.cpp: undefined reference to `__rtti_user'
Untitled1.o(.text$__tf12SAConnection[SAConnection type_info function]+0x1d):untitled1.cpp: undefined reference to `__rtti_user'
Untitled1.o(.text$__tf9SACommand[SACommand type_info function]+0x1d):untitled1.cpp: undefined reference to `__rtti_user'
Untitled1.o(.text$__tf11SAValueRead[SAValueRead type_info function]+0x1d):untitled1.cpp: undefined reference to `__rtti_user'
Untitled1.o(.text$__tf7SAValue[SAValue type_info function]+0x29):untitled1.cpp: undefined reference to `__rtti_si'
Untitled1.o(.text$__tf7SAParam[SAParam type_info function]+0x29):untitled1.cpp: undefined reference to `__rtti_si'
Untitled1.o(.text$__tf13saPlaceHolder[saPlaceHolder type_info function]+0x1d):untitled1.cpp: undefined reference to `__rtti_user'
Untitled1.o(.text$__tf7SAField[SAField type_info function]+0x29):untitled1.cpp: undefined reference to `__rtti_si'
Untitled1.o(.text$__tf11SAException[SAException type_info function]+0x1d):untitled1.cpp: undefined reference to `__rtti_user'
Untitled1.o(.text$__tf15SAUserException[SAUserException type_info function]+0x29):untitled1.cpp: undefined reference to `__rtti_si'
collect2: ld returned 1 exit status

make.exe: *** ["Project] Error 1

Esecuzione terminata


ma probabilmente sbaglio a linkare.. come si fà?
io le ho aggiunte tramite le opzioni del progetto, facendo così:

http://img209.imageshack.us/img209/3881/aaajy4.jpg

Minchia quanta ignoranza mi muove :P
Grazie ancora :D

AlexanderPD
25-08-2007, 17:21
doppio post :O
ok ora non dà errori di compilazione od altro.. ma si chiude istantaneamente senza dare output di alcun tipo..

ovviamente l'ho avviato dal prompt di ms-dos,


C:\Documents and Settings\Utente\Documenti>"Project 1.exe"

C:\Documents and Settings\Utente\Documenti>


nessun output :(

variabilepippo
25-08-2007, 17:28
Posta il sorgente completo della versione più recente...

Hai provato a copiare tutte le DLL presenti nella sottocartella \BIN di SQLAPI++ nella cartella del tuo eseguibile?

Dovrebbe bastare libsqlapi.dll, ma è meglio avere un eccesso di zelo.

AlexanderPD
25-08-2007, 17:42
Posta il sorgente completo della versione più recente...

#include <windows.h>
#include <stdio.h> // for printf
#include <SQLAPI.h> // main SQLAPI++ header
#include <stdlib.h>
//#include <odbcAPI.h>

int main(int argc, char* argv[])
{
SAConnection con; // create connection object

try
{

con.Connect("Driver={Microsoft Access Driver (*.mdb)}; Dbq=C:\\db.mdb;", "", "", SA_Client_NotSpecified);

printf("We are connected!\n");

// Disconnect is optional
// autodisconnect will ocur in destructor if needed
con.Disconnect();

printf("We are disconnected!\n");
}
catch(SAException &x)
{
// SAConnection::Rollback()
// can also throw an exception
// (if a network error for example),
// we will be ready
try
{
// on error rollback changes
con.Rollback();
}
catch(SAException &)
{
}
// print error message
printf("%s\n", (const char*)x.ErrText());
}
system("pause");
return 0;
}

Hai provato a copiare tutte le DLL presenti nella sottocartella \BIN di SQLAPI++ nella cartella del tuo eseguibile?

ho messo l'eseguibile direttamente dentro la cartella \BIN con le Dll ma nessun effetto..

queste le librerie linkate:
http://img466.imageshack.us/img466/1566/bbbfv9.jpg

Ripeto la domanda di prima.. per usare odbc bisogna aver installato qualcosa di particolare nel pc?
Grazie ancora di tutto ;)

variabilepippo
25-08-2007, 18:04
Non hai specificato il client da adottare, ho modificato la riga di connessione in questo modo:

con.Connect("Driver={Microsoft Access Driver (*.mdb)}; Dbq=C:\\db.mdb;", "", "", SA_ODBC_Client);

Compilando con Code::Blocks (http://www.hwupgrade.it/forum/showthread.php?t=1424237) ho dovuto impostare solo 2 riferimenti, -lsqlapi e -lversion. In fase di esecuzione ricevo l'ovvio (non ho il file db.mdb sulla root di C):

[Microsoft][Driver ODBC Microsoft Access] Impossibile trovare il file "(sconosciuto)".
Premere un tasto per continuare . . .

Mettendo un file db.mdb nella stessa cartella dell'eseguibile tutto funziona alla perfezione (con con.Connect("Driver={Microsoft Access Driver (*.mdb)}; Dbq=.\\db.mdb;", "", "", SA_ODBC_Client);):


We are connected!
We are disconnected!
Premere un tasto per continuare . . .

per usare odbc bisogna aver installato qualcosa di particolare nel pc?

Nella maggior parte dei casi no.

AlexanderPD
27-08-2007, 07:52
boh!
sono sempre + sicuro che devo installare qualcosa per far funzionare stò benedetto programma.

ho provato a compilare sia con DevCpp5 che con il Code::Blocks, ma il risultato è sempre lo stesso!
Fa' il build, mi compare un pop-up che dice "Grazie per aver usato le SQLAPI++ etc etc" e sul prompt di ms dos fà "premere un tasto per continuare".. in pratica del codice che ho scritto mi esegue solo il system("pause")..

possibile? Cosa sbaglio? Alla fine dovrebbe essere una cosa semplice! Devo solamente includere libsqlapi.a e libversion.a e far eseguire questo codice:


#include <windows.h>
#include <stdio.h> // for printf
#include <SQLAPI.h> // main SQLAPI++ header
#include <stdlib.h>

int main(int argc, char* argv[])
{
SAConnection con; // create connection object

try
{

con.Connect("Driver={Microsoft Access Driver (*.mdb)}; Dbq=C:\\db.mdb;", "", "", SA_ODBC_Client);

printf("We are connected!\n");

// Disconnect is optional
// autodisconnect will ocur in destructor if needed
con.Disconnect();

printf("We are disconnected!\n");
}
catch(SAException &x)
{
// SAConnection::Rollback()
// can also throw an exception
// (if a network error for example),
// we will be ready
try
{
// on error rollback changes
con.Rollback();
}
catch(SAException &)
{
}
// print error message
printf("%s\n", (const char*)x.ErrText());
}
system("pause");
return 0;
}

sbaglio qualcosa? La cosa che più mi sconforta è che non mi dà neanche un errore! Un segno di vita :(
Grazie ancora :)

edit:
ho provato a mettere un puts("prova.."); prima del system("pause"); e non viene visualizzato! eppure è fuori da ogni graffa! Ci capisco sempre meno ._.
anche mettendo puts in giro per il codice non ne viene visualizzato nemmeno uno >_>
ok ora sono nel panico + totale :D

edit 2:
Ho notato che quando lancio l'eseguibile del mio programma e compare il pop-up delle SQLAPI++ nella stessa directory del db.mdb compare db.ldb, ovvero lo stesso file che crea Access quando apri un qualsiasi database.
Questo vuol dire che un qualche tipo di connessione c'è, e qualcosa funziona! Quindi il problema è prettamente nella visualizzazione dei dati.. cosa potrebbe causarlo?

cionci
27-08-2007, 09:41
Metti qualche stampa all'interno delle eccezioni.
Access l'hai installato sulla macchina ? In talc aso dovrebbe bastare avere quello ;)

variabilepippo
27-08-2007, 09:58
Non so cosa dirti, io uso Vista ed il tuo sorgente, una volta compilato, restituisce (dopo l'AboutBox di SQLAPI++):

We are connected!
We are disconnected!

Non ho Access installato sul PC.

Prova a copiare il file db.mdb nella stessa cartella dell'eseguibile, ovviamente dovrai modificare la stringa di connessione:

Dbq=.\\db.md

AlexanderPD
27-08-2007, 10:43
Metti qualche stampa all'interno delle eccezioni.
Access l'hai installato sulla macchina ? In talc aso dovrebbe bastare avere quello ;)

Si ho provato anche a mettere una stampa nelle eccezzioni.. ci ho scritto:
printf ("%s\n", (const char*)x.ErrText());
sperando di poter vedere l'errore.. ma non succede nulla

ho messo dei printf in giro per il codice e non si vede niente :(

@variabilepippo: si ho provato anche così :( niente :(

forse può influenzare il fatto che qui a lavoro access ha un sistema di account? Io per aprire il database da access devo mettere user e pass altrimenti non si apre nulla.. però usando questo db sul pc di casa (quindi fuori da questo gruppo) lo carica senza nessun problema, anche senza la richiesta di pass.
Anche a casa ho il problema che non vedo i printf.. si vede è un errore sistematico che faccio inconsciamente :(

AlexanderPD
27-08-2007, 14:58
Probabilmente ultimo tentativo..
riassumo passo passo tutto ciò che ho fatto per fare questo sorgente.

Scarico ed installo DevCpp
Scarico ed installo APISQL++
Dal DevCpp creo un nuovo progetto ed importo le librerie libsqlapi.a e libversion.a
Nel main.cpp scrivo:


#include <windows.h>
#include <stdio.h> // for printf
#include <SQLAPI.h> // main SQLAPI++ header

int main(int argc, char* argv[])
{
SAConnection con; // create connection object

try
{

con.Connect("Driver={Microsoft Access Driver (*.mdb)}; Dbq=C:\\db.mdb;", "", "", SA_ODBC_Client);

printf("We are connected!\n");

// Disconnect is optional
// autodisconnect will ocur in destructor if needed
con.Disconnect();

printf("We are disconnected!\n");
}
catch(SAException &x)
{
printf("%s\n", (const char*)x.ErrText());
// SAConnection::Rollback()
// can also throw an exception
// (if a network error for example),
// we will be ready
try
{
// on error rollback changes
con.Rollback();
}
catch(SAException &)
{
printf("%s\n", (const char*)x.ErrText());
}
// print error message
printf("%s\n", (const char*)x.ErrText());
}
printf ("prova");
system ("pause");
return 0;
}

Compilo.. e dopo il pop-up delle SQLAPI++ mi viene il prompt di ms-dos con la sola scritta "Premere un tasto per continuare . . ."
Unica cosa da notare, se apro il progetto dal prompt di ms-dos si apre un altro prompt con la scritta "premere un tasto per continuare"..

Ho provato a farlo fare ad un amico con questo stesso procedimento e gli dà lo stesso identico risultato mio.
Oltre a queste operazioni non faccio nient'altro.. vi viene in mente cosa c'è di sbagliato?
Purtroppo non sò + che pesci pigliare, non ho nessun errore ne warning nella compilazione.. ed ho provato anche ad includere iostream.h per usare il cout.. stessa cosa del printf.

Questo è l'ultimo appello, ciau grazie per l'aiuto ricevuto fin'ora! ^__^

variabilepippo
27-08-2007, 15:08
Posso provare a mandarti il mio eseguibile funzionante per vedere se il problema dipende dal compilatore o dal tuo sistema.

variabilepippo
27-08-2007, 15:21
Clicca su questo link (http://files-upload.com/files/462702/exsql.zip), aspetta 30 secondi, scarica il file, decompri il contenuto del file in una cartella, esegui il programma.

Cosa viene fuori?

AlexanderPD
27-08-2007, 15:36
Clicca su questo link (http://files-upload.com/files/462702/exsql.zip), aspetta 30 secondi, scarica il file, decompri il contenuto del file in una cartella, esegui il programma.

Cosa viene fuori?

la fortuna mi perseguita >_>
cliccando sul link mi dice:

Don’t worry, it’s all ok.
We’re upgrading our server infrastructure. Very soon you will be able to enjoy
a brand new files-upload.com. Totally redesigned and running on a new platform.
We are doing our best to make new version faster and more stable than the old one.
Hope you like all new features that we've reserved for you.

Thanks for being patient with this.

>__> non è che avresti un altro hosticino? :P
Grazie ancora ^_^

variabilepippo
27-08-2007, 15:47
Clicca qua (http://www.megaupload.com/?d=W5YS4ETL).

AlexanderPD
27-08-2007, 15:57
incredibile O_O funziona! :O
quindi ho sbagliato qualcosa nell'includere le librerie giuste :O

Grazie mille! :D finalmente vedo queste 2 scrittine :D
ovviamente compilando non funziona perchè non trova le i due file .a.. domani ci perderò tempo e riuscirò sicuramente a tirare fuori qualcosa dal buco :D

Grazie per la pazienza e l'aiuto! :D

variabilepippo
27-08-2007, 16:02
quindi ho sbagliato qualcosa nell'includere le librerie giuste

Probabilmente è così...

Quale versione del compilatore mingw hai installato sul sistema? I vari pacchetti sono aggiornati all'ultima release?

cionci
27-08-2007, 16:14
variabilepippo: prova a dargli i comandi di compilazione da shell che hai usato e così vediamo se c'è qualcosa che non va nel compilatore.

variabilepippo
27-08-2007, 16:29
Uso Vista e MinGW ha problemi noti su questa piattaforma, è molto complicato compilare da linea di comando per via di alcuni cambiamenti introdotti nel sistema operativo (dovrei specificare esplicitamente una marea di percorsi). Al limite posso pubblicare su qualche sito di hosting il progetto creato con Code::Blocks.

Comunque io aspetterei informazioni sulla versione del compilatore usato da AlexanderPD.

AlexanderPD
28-08-2007, 07:18
Uso Vista e MinGW ha problemi noti su questa piattaforma, è molto complicato compilare da linea di comando per via di alcuni cambiamenti introdotti nel sistema operativo (dovrei specificare esplicitamente una marea di percorsi). Al limite posso pubblicare su qualche sito di hosting il progetto creato con Code::Blocks.

Comunque io aspetterei informazioni sulla versione del compilatore usato da AlexanderPD.

Beh a dire il vero ne ho provati 2 di compilatori, ed entrambi con lo stesso risultato..
DevCpp 4.9.9.2 (minigw32 3.4.2)
Code::Blocks 1.0rc2 (minigw non ho trovato però la versione)

Cmq usando il devcpp ora ho risolto, sono dovuto andare su Strumenti -> opzioni di compilazione
ed aggiungere: "-lsqlapi -lversion"
tra i parametri da dare al linker, ora compila bene e non vedo errori :D

solo una domanda.. come hai fatto a sapere che si dovevano aggiunger "-lsqlapi -lversion" ? Se + avanti avessi bisogno di aggiungerne altre non saprei con quale criterio trovarle :P

Grazie mille di tutto! ^_^

variabilepippo
28-08-2007, 10:30
solo una domanda.. come hai fatto a sapere che si dovevano aggiunger "-lsqlapi -lversion" ? Se + avanti avessi bisogno di aggiungerne altre non saprei con quale criterio trovarle :P

Solitamente è scritto nella documentazione della libreria che stai cercando di usare. In alcuni casi devi ricercare la funzione non trovata dal linker all'interno delle librerie installate sul sistema oppure su Internet.

Furla
28-08-2007, 15:15
salve a tutti, in passato avevo provato vanamente ad usare il c++ per interfacciarmi ad un database, ed ho dovuto ripiegare sul vb6 (linguaggio che odio ogni giorno di più, e che sto cercando di abbandonare).
non sarei mai venuto a conoscenza dell'esistenza delle sqlapi, né sarei mai riuscito a fare funzionare, data la mia inesperienza, e di questo vi ringrazio :)
ora vorrei approfittare un'ultima volta di voi con qualche domanda:
- per "installare" le sqlapi si intende semplicemente estrarre i files nelle cartelle del compilatore? io ho fatto così e funziona tutto, ma non so se è il procedimento corretto :D
- nella documentazione del sito onestamente non riesco a capire se posso interfacciarmi con un database il formato .dbf, tantomeno come dovrei impostare le stringhe del metodo connect.

variabilepippo
28-08-2007, 15:18
SQLAPI++ NON è l'unica libreria per l'interfacciamento ai database né la migliore.

Quale compilatore C++ usi? Provo a consigliartene una progettata appositamente per gestire i DBF.

Furla
29-08-2007, 14:42
DevCpp 4.9.9.2

nuovoUtente86
30-08-2007, 10:52
Devi metterlo come primo include. Hai scaricato il pacchetto di Dev-C++ per lavorare con le API di Windows ?
piccolo OT.Io sto utilizzando le Api di windows per la grafica,e il dev le compila ma non ho aggiunto alcun pacchetto,penso sia gia incluso...?

cionci
30-08-2007, 10:56
piccolo OT.Io sto utilizzando le Api di windows per la grafica,e il dev le compila ma non ho aggiunto alcun pacchetto,penso sia gia incluso...?
Può essere...sinceramente non ricordo.