Dela via


Datakälla: Konfigurera en ODBC-datakälla programmatiskt

Det här avsnittet beskriver hur du kan konfigurera ODBC-datakällnamn (Open Database Connectivity) programmatiskt. Detta ger dig flexibilitet att komma åt data utan att tvinga användaren att uttryckligen använda ODBC-administratören eller andra program för att ange namnen på datakällorna.

Vanligtvis kör en användare ODBC-administratör för att skapa en datakälla om det associerade databashanteringssystemet (DBMS) stöder den här åtgärden.

När du skapar en ODBC-datakälla för Microsoft Access via ODBC-administratören får du två alternativ: du kan välja en befintlig .mdb fil eller skapa en ny .mdb fil. Det finns inget programmatiskt sätt att skapa .mdb-filen från ditt MFC ODBC-program. Om ditt program kräver att du placerar data i en Microsoft Access-datakälla (.mdb fil) vill du förmodligen ha en tom .mdb fil som du kan använda eller kopiera när du behöver den.

Många DBMS tillåter dock att programmatiska datakällor skapas. Vissa datakällor har en katalogspecifikation för databaser. En katalog är alltså datakällan och varje tabell i datakällan lagras i en separat fil (om det gäller dBASE är varje tabell en .dbf-fil). Drivrutiner för andra ODBC-databaser, till exempel Microsoft Access och SQL Server, kräver att vissa specifika kriterier uppfylls innan en datakälla kan upprättas. När du till exempel använder SQL Server ODBC-drivrutinen måste du ha upprättat en SQL Server-dator.

SQLConfigDataSource-exempel

I följande exempel används ::SQLConfigDataSource funktionen ODBC API för att skapa en ny Excel-datakälla med namnet Ny Excel-datakälla:

SQLConfigDataSource(NULL,ODBC_ADD_DSN, "Excel Files (*.xls)",
                   "DSN=New Excel Data Source\0"
                   "Description=New Excel Data Source\0"
                   "FileType=Excel\0"
                   "DataDirectory=C:\\EXCELDIR\0"
                   "MaxScanRows=20\0");

Observera att datakällan faktiskt är en katalog (C:\EXCELDIR); den här katalogen måste finnas. Excel-drivrutinen använder kataloger som datakällor och filer som enskilda tabeller (en tabell per .xls fil).

Mer information om hur du skapar tabeller finns i Datakälla: Skapa en tabell programmatiskt i en ODBC-datakälla.

I följande information beskrivs de parametrar som måste skickas till ::SQLConfigDataSource ODBC API-funktionen. Om du vill använda ::SQLConfigDataSourcemåste du inkludera odbcinst.h-huvudfilen och använda importbiblioteket Odbcinst.lib. Dessutom måste Odbccp32.dll finnas i sökvägen vid körning (eller Odbcinst.dll för 16-bitars).

Du kan skapa ett ODBC-datakällnamn med hjälp av ODBC-administratören eller ett liknande verktyg. Ibland är det dock önskvärt att skapa ett datakällnamn direkt från ditt program för att få åtkomst utan att användaren behöver köra ett separat verktyg.

ODBC-administratören (installeras vanligtvis på Kontrollpanelen) skapar en ny datakälla genom att placera poster i Windows-registret (eller, för 16 bitar, i Odbc.ini-filen). ODBC Driver Manager frågar den här filen för att hämta nödvändig information om datakällan. Det är viktigt att veta vilken information som behöver placeras i registret eftersom du måste ange den när du anropar ::SQLConfigDataSource.

Även om den här informationen kan skrivas direkt till registret utan att använda ::SQLConfigDataSource, förlitar sig alla program som gör det på den aktuella tekniken som Driver Manager använder för att underhålla sina data. Om en senare revision av ODBC Driver Manager implementerar registerhållning om datakällor på ett annat sätt, bryts alla program som använder den här tekniken. Det är vanligtvis lämpligt att använda en API-funktion när en tillhandahålls. Koden är till exempel portabel från 16 bitar till 32 bitar om du använder ::SQLConfigDataSource funktionen, eftersom funktionen skriver korrekt till Odbc.ini-filen eller till registret.

SQLConfigDataSource-parametrar

Följande förklarar parametrarna för ::SQLConfigDataSource funktionen. Mycket av informationen hämtas från ODBC API-programmerarens referens som medföljer Visual C++ version 1.5 och senare.

Funktionsprototyp

BOOL SQLConfigDataSource(HWND hwndParent,UINT fRequest, LPCSTR lpszDriver, LPCSTR lpszAttributes);

Anmärkningar

Parametrar och användning

hwndParent
Fönstret som anges som ägare till alla dialogrutor som odbc-drivrutinshanteraren eller den specifika ODBC-drivrutinen skapar för att hämta ytterligare information från användaren om den nya datakällan. Om parametern lpszAttributes inte innehåller tillräckligt med information visas en dialogruta. Parametern hwndParent kan vara NULL.

lpszDriver
Förarbeskrivningen. Det här är namnet som visas för användarna i stället för det fysiska drivrutinsnamnet (DLL).

lpszAttributes
Lista över attribut i formatet "keyname=value". Dessa strängar avgränsas med null-avslutare med två på varandra följande null-avslutare i slutet av listan. Dessa attribut är huvudsakligen specifika för standarddrivrutiner och läggs in i den nya datakällans register. En viktig nyckel som inte nämns i ODBC API-referensen för den här funktionen är "DSN" ("datakällans namn"), som anger namnet på den nya datakällan. Resten av posterna är specifika för drivrutinen för den nya datakällan. Ofta är det inte nödvändigt att ange alla poster eftersom drivrutinen kan fråga användaren med dialogrutor för de nya värdena. (Ange hwndParent till NULL för att orsaka detta.) Du kanske uttryckligen vill ange standardvärden så att användaren inte uppmanas att göra det.

Så här bestämmer du beskrivningen av en drivrutin för parametern lpszDriver med HJÄLP av ODBC-administratör

  1. Kör ODBC-administratör.

  2. Klicka på Lägg till.

Detta ger dig en lista över installerade drivrutiner och deras beskrivningar. Använd den här beskrivningen som parametern lpszDriver . Observera att du använder hela beskrivningen, till exempel "Excel Files (*.xls)", inklusive filnamnstillägget och parenteserna om de finns i beskrivningen.

Alternativt kan du undersöka registret (eller för 16 bitars fil Odbcinst.ini), som innehåller en lista över alla drivrutinsposter och beskrivningar under registernyckeln "ODBC-drivrutiner" (eller avsnittet [ODBC-drivrutiner] i Odbcinst.ini).

Ett sätt att hitta nyckelnamn och värden för parametern lpszAttributes är att undersöka Odbc.ini-filen för en redan konfigurerad datakälla (kanske en som har konfigurerats av ODBC-administratören).

Så här hittar du nyckelnamn och värden för parametern lpszAttributes

  1. Kör Windows-registereditorn (eller öppna filen Odbc.ini för 16 bitar).

  2. Hitta information om ODBC-datakällor med något av följande:

    • För 32 bitar hittar du nyckeln HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources i den vänstra rutan.

      I det högra fönstret visas posterna i formuläret: "pub: REG_SZ:<datakällans namn>", där <datakällans namn> är en datakälla som redan har konfigurerats med önskade inställningar för den drivrutin som du tänker använda. Välj den datakälla som du vill använda, till exempel SQL Server. Objekten som följer strängen "pub:" är i ordning det nyckelnamn och värde som ska användas i parametern lpszAttributes .

    • För 16 bitar letar du reda på avsnittet i den Odbc.ini fil som markerats med [<datakällans namn>].

      Raderna som följer den här raden är av formatet "keyname=value". Det här är exakt de poster som ska användas i parametern lpszAttributes .

Du kanske också vill granska dokumentationen för den specifika drivrutin som du ska använda. Du hittar användbar information i onlinehjälpen för drivrutinen, som du kan komma åt genom att köra ODBC-administratör. Dessa hjälpfiler placeras vanligtvis i WINDOWS\SYSTEM-katalogen för Windows NT, Windows 3.1 eller Windows 95.

Så här skaffar du onlinehjälp för din ODBC-drivrutin

  1. Kör ODBC-administratör.

  2. Klicka på Lägg till.

  3. Välj drivrutinsnamnet.

  4. Klicka på OK.

När ODBC-administratören visar information om hur du skapar en ny datakälla för just den drivrutinen klickar du på Hjälp. Då öppnas hjälpfilen för den specifika drivrutinen, som vanligtvis innehåller viktig information om användningen av drivrutinen.

Se även

Datakälla (ODBC)