2016-03-23 22 views
9

Sto provando a creare un driver ODBC personalizzato utilizzando C++ per un ambiente Windows (come PostgreSQL, Simba, Firebird, ecc.) Poiché l'API ODBC ha più metodi ODBC API per impostazione predefinita.Come associare dati a SQLBindCol utilizzando ODBC Driver API utilizzando C++

Ho stabilito connessioni tramite DSN e sono in grado di eseguire la query SQL utilizzando il metodo SQLExecuteDirect.

Tuttavia, durante la connessione di Excel con il nostro driver ODBC, non riesco a collegare l'elenco di tabelle alla procedura guidata di query Microsoft. enter image description here

Il SQLTables(), SQLBindColumn(), e SQLFetch() metodi sono utilizzati per recuperare l'elenco dei tablenames qui. I dati sono associati utilizzando il metodo SQLBindColumn.

Ma io sono confuso su come recuperare il nome della scheda e associarli a Excel?

+0

Perché stai creando il tuo driver ODBC ?! E qual è il Data Source per il quale stai scrivendo questo driver? – MikeC

+0

Grazie per la risposta @MikeC. Ho il mio servizio di risparmio. Voglio connettere e legare questi dati di base dell'usato a MS-Excel o altri strumenti ...Simile a questo [Hive-ODBC] (https://cwiki.apache.org/confluence/display/Hive/HiveODBC). Ma voglio costruirlo con lo studio visivo. –

+0

Hai considerato l'utilizzo dell'SDK SimbaEngine (http://www.simba.com/drivers/simba-engine-sdk/) come base per il tuo driver? Tutti i driver Simba sono basati su questo SDK e dovresti essere in grado di essere quasi completo e in esecuzione entro una settimana. – KylePorter

risposta

0

Dopo aver chiamato SQLExecDirect() oSQLPrepare() è possibile chiamare SQLDescribeCol(). SQLDescribeCol() restituirà tutte le informazioni sulla colonna di cui si dovrebbe avere bisogno.

È possibile visitare il sito web di Microsoft per qui: https://docs.microsoft.com/en-gb/sql/odbc/reference/syntax/sqldescribecol-function

Anche se questo è utile solo se si sta facendo un

select top 1 * from (table name **SQLTables** found) 

Oppure, se si vuole trovare i nomi di colonna da uno SQL generico.


L'altro modo si può andare a trovare tutte le colonne è quello di utilizzare le SQLColumns() funzione. È simile a SQLTables() (stesso principio di ricerca) e ripristina un set di risultati con i risultati. Trovato qui: https://docs.microsoft.com/en-gb/sql/odbc/reference/syntax/sqlcolumns-function

0

L'applicazione di Excel caricherà tutte le informazioni sullo schema prima dell'esecuzione di qualsiasi query.

In questo caso, il metodo SQLTables verrà chiamato con gli attributi come i nomi di catalogo, schema e tabella. Sulla base dell'attributo chiamato informazioni sullo schema deve essere restituito nel metodo SQLFetch.

Per riferimento:https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/sqltables-function

Se il metodo SQLTables è stato chiamato con l'attributo nome del catalogo quindi Nome catalogo deve essere legarsi in modo SQLFetch utilizzando l'indirizzo dati restituiti nel metodo SQLBindCol.

Allo stesso modo, è necessario restituire anche i nomi di schema e tabella per il metodo SQLTables.

Per ulteriori informazioni su come associare le informazioni sullo schema di colonna saggio, consultare la sezione commenti sotto il collegamento sopra.

Problemi correlati