Eerste teken datasource wordt maar weergegeven

Status
Niet open voor verdere reacties.

abunai

Nieuwe gebruiker
Lid geworden
28 sep 2007
Berichten
3
Ik probeer met een programma connectie te maken met een ODBC koppeling, maar dit is mij tot op heden niet gelukt. Ik heb het hele internet afgezocht, maar kan vooralsnog geen oplossing vinden. Ik heb ook geprobeerd om de bestaande datasources weer te geven, maar dan toont het programma alleen maar het 1ste teken van de datasource naam. Het moet een console application zijn.

De code die ik gebruik is als volgt (gevonden op internet en aangepast, maar zonder resultaat)

Code:
#include <stdio.h>
#include <sql.h>
#include <sqlext.h>

main() {
  SQLHENV env;
  char dsn[256];
  char desc[256];
  SQLSMALLINT dsn_ret;
  SQLSMALLINT desc_ret;
  SQLUSMALLINT direction;
  SQLRETURN ret;

  SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
  SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0);

  direction = SQL_FETCH_FIRST;
  while(SQL_SUCCEEDED(ret = SQLDataSources(env, direction,
                       dsn, sizeof(dsn), &dsn_ret,
                       desc, sizeof(desc), &desc_ret))) {
    direction = SQL_FETCH_NEXT;
    printf("%s - %s\n", dsn, desc);
    if (ret == SQL_SUCCESS_WITH_INFO) printf("\tdata truncation\n");
  }
}

kan iemand me aub helpen, want ik kom er gewoon niet uit.

Heb nu een nieuwe code neergezet die beter werkt, want nu kloppen de eerste tekens ook, maar nog steeds krijg ik er niet meer uit.

De dsn_ret wordt wel goed teruggegeven, want het cijfer wat hierin komt te staan geeft wel de juist hoeveelheid tekens aan.
 
Laatst bewerkt:
Code:
while(SQL_SUCCEEDED(ret = SQLDataSources(env, direction,
                       dsn, sizeof(dsn), &dsn_ret,
                       desc, sizeof(desc), &desc_ret)))
volgens mij is dat maar 1 keer,
als je nou eens van die while een if maakt en dan een for loop maakt voor ieder teken totaan het laatste teken
 
Ik krijg wel 3 verschillende datasources te zien (dit klopt ook) en ik zie ook dat de letter die wel wordt weergegeven klopt met de datasources die in windows aanwezig zijn. Het probleem zit hem er alleen in dat ik alleen maar de eerste letter van de datasource en de omschrijving krijg.
 
Ik heb het al opgelost. De fout zat erin dat ik dus expliciet SQLDataSourcesA() moest aanroepen en dat deed ie dus niet automatisch. Het overzicht en de connectie met de database zijn nu gelukt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan