ODBC Projekt -> Unsicherheit
-
Ich habe soeben meine erstes SDI Projekt mit ODBC Unterstützung erfolgreich beendet. Nun will ich aber ein größeres Projekt in Angriff nehmen dass ich dann auch veröffentlichen will. Ich will dazu eine *.mdb Datenbank (Micosoft Access) nutzen und auch am Ende eine Setup Datei erstellen.
Nun meine Frage:
Kann ich die Datenbanbank "einfach so" mitliefern oder muss ich sie im Setup dann irgendwie zu den ODBC Datenquellen hinzufügen. Muss ich dann auch vlt. noch den Treiber mitliefern und darf ich dass überhaupt?
Und wenn ja, kann man das in einem Setup Assistenten Projekt von MS Visual Studio alles realisieren?
Oder ist es vlt. besser wenn ich statt einer *.mdb Datenbank eine *.dfb nehmeBitte um Klarheit.

gruß DR
-
Ob du ne Accessdatenbank einfach so mitliefern darfst weis ich jetzt nicht so genau, die frage hab ich auch schon mal gestellt aber keine antwort bekommen. Soviel ich weis ist ne Accessdatenbank lizenspflichtig.
Die datenbank, die an dein Prog gebunden ist, must du natürlich mit ausliefern. es sei denn du willst per code (z.b beim start des Progs.) ne datenbank erstellen lassen.
einen treiber brauchst du nicht mit auszuliefern da alle treiber für Microsoftdatenbanken von hausaus installiert sind.
in der Registry zu finden unter
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INIAber du must die Treiber für die Datenbank in der Registry mit deiner datenbank verknüpfen.
HKEY_CURRENT_USER\Software\ODBC\ODBC.INIDie einträge in der Registry, um die datenbank zu verknüpfen, kannst du entweder bei der Installation (z.b. mit Install Shield) oder durch dein Programm erstellen lassen.
-
Also Du kannst in jedem Fall Deine Datenbank weitergeben.
Für den Zugriff auf einen Accessdatenbank benötigt ein Anwender dann die entsprechende JET-Engine.
Die gibt es beim MS zum runterladen und gehört nicht mehr zum MDAC.
Das kann man aber in sein Setup integrieren.Wenn Du eine DBF Datei verwendest, dann kommst Du mit dem MDAC aus, das ist aber bei XP immer schon installiert!
BTW: Auch eine komplette Access Runtime gibt es frei bei MS zum runterladen, wenn es mehr von Access sein soll. Lizenzrechtlich gibt es keine Einschränkungen von MS auf eigene MDB Dateien.
-
Vielen Dank für eure Antworten.
Aber wie ist das mit der Jet Engine?Muss ich die einfach nur mit ausliefern und vor der Installation meines Progs installieren lass? Oder muss ich meine Datenbank und mein Prog dann noch irgendwie mit der Engine verbinden?Ich würde dass ja lieber alles einem guten Programm überlassen, da ich jetzt das erste Mal mit Datenbanken arbeite und ich das Projekt für die Schule mache ->Wichtig

Allerdings kostet InstallShield viel Geld, gibt es dazu auch ne Freeware Alternative die das auch kann oder kann das auch MS Visual Studio realisieren?
-
InstallShield ist bei VisualStudios Prof. & Enterprise Edition mit dabei. Solltest du also eines der beiden haben einfach installieren.
eine andere möglichkeit ist eben, das du dir zugriffauf die Registry verschaffst (siehe codeproject) & die Notwendigen einträge in der Registry unter
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
selbst, durch dein prog, setzen lässt.
-
Oder man nimmt SQLConfigDataSource

-
LowFly schrieb:
eine andere möglichkeit ist eben, das du dir zugriffauf die Registry verschaffst (siehe codeproject) & die Notwendigen einträge in der Registry unter
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
selbst, durch dein prog, setzen lässt.
Diese Empfehlung kann nicht Dein Ernst sein!
Wie oft werden MDAC Installation genau durch solche Eingriffe zerstört!Sowohl für MDAC als auch für die JET Engine gibt es fertige Setups.
Was spricht dagegen die Software auszuliefern, beim Start zu prüfen ob alles notwendige da ist und bei Bedarf den Kunden zu bitten, dieses oder jenes Paket (MDAC, JET oder was sonst) nachzuinstallieren.
Das ganze packt man noch auf Seine Homepage oder in einen Extra-Ordner auf der CD und gut ists!Wir kümmern uns um MDAC gar nicht mehr. Bei XP ist das sowieso drin. Servicepacks werden dazu auch alle nase lang selbst installiert. Bei Bedarf kann jeder den Link in der DOKU oder auf der Homepage, oder in entsprechenden Fehlermeldungen finden und bei MS sich ds entsprechende herunterladen.
-
THX für die vielen Antworten

Das mit dem Jet Engine ist ne gute Idee, so wie ich es verstanden habe ist dort der *.mdb Treiber dür ODBC mit drin.(Bitte berichtigen falls ich falsch liege)Aber wie füge ich meine Datenbank auf dem PC des Endbenutzers zu den ODBC Datenquellen hinzu??Install Shield mag zwar gut sein
LowFly schrieb:
InstallShield ist bei VisualStudios Prof. & Enterprise Edition mit dabei. Solltest du also eines der beiden haben einfach installieren.
aber bei MSVS ist nur eine stark abgespeckte Version enthalten. Ich habe dort noch keine Funktion entdeckt wo man dass mit den Datenquellen regeln kann.
Weiß jmd. entweder wie das geht oder kennt jmd. eine Alternative??
-
DigitalRevolution schrieb:
Aber wie füge ich meine Datenbank auf dem PC des Endbenutzers zu den ODBC Datenquellen hinzu??
[...]
Weiß jmd. entweder wie das geht oder kennt jmd. eine Alternative??
estartu schrieb:
Oder man nimmt SQLConfigDataSource


-
Also dass hört sich vielversprechend an, habe mir auch den Thread durchgelesen habe aber nur ca. 50% verstande... wie gesagt ich bin Newbie im Bereich Datenbanken, ODBC

Aber so weit ich das mitgekriegt habe hat das etwas mit MSDE zu tun.
1. Was ist das genau??
2. Wie kann ich es bei mir einbinden?
3. Wie funzt die SQLConfigDataSource Funktion??Ich hoffe ihr könnt mir weiterhelfen.
-
Also: Ich nutze die MSDE als Datenbank - du ja Access.
Also musst du nen anderen Treiber angeben.
Wie das genau funktioniert, habe ich auch nie verstanden.

Ich habe so lange probiert, bis endlich das passierte, was ich wollte.
-
Vielen Dank für eure Hilfe, ihr habt mir sehr geholfen:
Habe nun folgende Funktion geschrieben(in einem auf Dialogfeldern basierenden MFC Programm):#include "ODBCINST.H" #include <afxdb.h> #include <afxdao.h> ... void CCreateODBCDatasourceDlg::OnBnClickedStart() { UpdateData(TRUE); CString params; if(DBQ=="") MessageBox("Bitte tragen Sie den Standort der MS Access Datenbank ein."); else { //Parameter zuweisen params.Format("DSN=%s|Description=%s|FileType=%s|DBQ=%s|", m_strName, m_strDescription, "MS Access", m_strDatabaseLocation); char *paramsChar = new char[params.GetLength() + 1]; strcpy(paramsChar, params); if(NULL != strtok(paramsChar, "|")) while (NULL != strtok(NULL, "|")){ } //Datenquelle hinzufügen SQLConfigDataSource(NULL, ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)", paramsChar); delete paramsChar; UpdateData(FALSE); } }Und... es klappt

Noch mal vielen Dank!