Odbc


#1

Dames, Heren,

Voor megafoon wil ik graag naast de MySQL interface ook een ODBC interface gaan implementeren.

Het is wel een zoektocht met verschillende voorbeelden die wel of niet werken.

Om een dsn aan te maken:
http://www.codeguru.com/Cpp/data/mfc_database/microsoftaccess/article.php/c4345

Ik denk dat ik http://www.codeproject.com/database/caaodbcclass.asp ga proberen te compileren in Megafoon.

Indien jullie nog beter info hebben m.b.t. ODBC gaarne reactie —)

De vriendelijke groet Jan Marco

Appendix A: “ODBC links”:

  1. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/odbcabout_this_manual.asp

  2. In de API reference vind je alle functies http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/odbcodbc_api_reference.asp

  3. voorbeeld-code om via ODBC naar een
    Access-database te gaan zonder dat je eerst een
    bijbehorende ODBC-datasource hebt aangemaakt,
    “DSN-less” zogezegd: http://www.codeproject.com/database/readdb.asp

  4. Wrappers voor ODBC en een complete ODBC-based viewer
    met sourcecode om zelf wat te hannesen met SQL tegen
    welke datasource dan ook, dus ook mysql als je MyODBC geinstalleerd hebt: http://www.codeproject.com/database/isqlmfc.asp

In het sql-raampje van dat gevalletje kan je met SQL
ook tabellen aanmaken:

CREATE TABLE Subscriber
(
lastname varchar(32),
fullname varchar(128),
streetname varchar(64),

)

Uitbreiden met een index, enz. zie SQL DDL, Data
Definition Language


#2

Dames, Heren,

Ik heb fshodbc-0.00.zip op mijn anonieme ftp server gezet. Alleen ter info. Deze experimenteel versie is bedoeld om ODBC aan de praat te krijgen.

Na tip van RGJ kan je er al een SQL statement mee uitvoeren op foondump.mdb.

Ik heb de error code van http://doc.ddart.net/mssql/sql70/odbcht10_9.htm

er in gezet. Alleen het werkt momenteel nog niet.

De vriendelijke groet Jan Marco


#3

Ik heb fshodbc-0.01.zip op mijn ftp server gezet. Hierin heb ik http://doc.ddart.net/mssql/sql70/odbcht10_9.htm in http://www.codeproject.com/database/caaodbcclass.asp verwerkt.

Ik zie wel dat als ik een verkeert SQL commando geef dan gaat hij fout.

Hij gaat dan heel veel rommel record op het scherm gooien.

Opzich is dit geen belemmering, want in Megafoon hebben we voorgedefineerde SQL syntax.

De vriendelijke groet Jan Marco

P.S. ALs je ODBC wil aanroepen in MFC dan zijn de volgende includes handig:

#include <afxcview.h>
#include <afxdb.h> // MFC database classes
#include <afxtempl.h>
#include <odbcinst.h>


#4

Dames, Heren,

Wanneer je de ODBC driver aanroept dan start deze de Access driver (ook wel Jet driver genoemd) en deze leest gewoon het database bestand.

Technisch gezien link je gewoon een DLL in die de database file (mdb) uitleest met odbcjt32.dll. Dus er zit geen server of socket tussen.

Zoiets heet ook wel een ‘file based database’.

Ik zie dat in C:\winnt\ODBC.ini de drivers worden gedefinieerd.

http://www.codeguru.com/Cpp/data/mfc_database/microsoftaccess/article.php/c4345 voegt ook iets toe aan ODBC.ini en aan de registery.

De vriendelijk groet Jan Marco

Appendix A: deel van ODBC.ini

[MS Access Database]
Driver32=C:\WINNT\System32\odbcjt32.dll


#5

Je vertelt er niet expliciet bij waarom je ODBC nodig hebt. Wil je specifiek met een database werken die geen JDBC ondersteunt? De meeste doen dat wel (postgres, sybase, mssql, oracle…).


#6

Hoi n3sci0,

Je vertelt er niet expliciet bij waarom je ODBC nodig hebt. Wil je specifiek met een database werken die geen JDBC ondersteunt?

Vrij simpel. De nieuwe Foondump versie ondersteunt MySQL, Postgres en ODBC via JDBC. N.B. Foondump is op Java gebaseerd.

Met Megafoon kan je straks selecties doen op de gedumpte “foondump” database via MySQL en ODBC. N.B. Megafoon is op Visual Studio C gebaseerd.

Concreet kan je met de nieuwe Foondump versie direct in Access dumpen (via JDBC). Met Megafoon (soort Cdfoon GUI op MFC gebaseerd) kan je via ODBC deze ACCESS database benaderen.

De vriendelijke groet Jan Marco


#7

[quote=“alkema_jm”]
Concreet kan je met de nieuwe Foondump versie direct in Access dumpen (via JDBC). [/quote]

Nee, je kan via JDBC via ODBC indirect in Access dumpen.

Waarom ODBC? Om alle mensen met obscure databases ook een kans te geven.


#8

A number of factors influence choosing the ODBC approach. These include a requirement for high performance, more granular control over the interface, and a small footprint.

The ODBC API is considerably harder to code than the object-based interfaces, but provides a finer degree of control over the data source. Unlike other data access technologies (such as ADO, RDO, or ODBCDirect), the ODBC API has not been made “bullet proof.” While it’s fairly easy to create ODBC errors during development, the ODBC API provides excellent error handling with detailed error messages. In general, developing, debugging, and supporting an ODBC API application requires a lot of knowledge, experience, and many lines of code. As a general rule, developers prefer to access data by using a simpler, higher-level object interface such as ADO.

ODBC is not suitable for nonrelational data such as ISAM (Indexed Sequential Access Method) data because it has no interfaces for seeking records, setting ranges, or browsing indexes. ODBC simply was not designed to access ISAM data. While you can use the Microsoft Jet ODBC driver to handle ISAM and native Microsoft Jet engine data, what is really happening is that the Microsoft Jet database engine converts the ISAM data to relational data and then provides limited ISAM functionality. Performance in this situation is slow due to the extra layer imposed by the Microsoft Jet engine.

If your application requires very fast access to existing ODBC data, and you’re willing to write many lines of complex code (or you already have a lot of ODBC code available for reuse), ODBC is a good choice.

See also http://msdn.microsoft.com/library/en-us/vsentpro/html/veconwhentouseodbc.asp?