Dynamische Datenbankeinbindung
-
Hallo,
und zwar direkt zu meine Problem. Wir haben in der schule ein projekt das sich WerWirdFTICampingnon nennt. Wie man erahnen kann soll es ein abklatsch zu der RTL sendung WerWirdMillionär werden. Nun zu meinem problem. Das programm ist fast fertig geproggt, datenbank komplett und so nur habe ich ein problem. Wenn man eine Datenbank ins C++ einbinden möchte, muss zuerst in der BDE eine Alias angelegt werden, in der Name und Pfad angegeben sein müssen. Nun will ich die .Exe und die Datenbank weiter geben ohne das die Oma erst noch die datenbank einbinden muss. Also Datenbank Pfad und Name soll dynamisch erzeugt werden. Bzw gibt es eine möglichkeit die Datenbank mit in die exe einzubinden sprich es muss nur die exe weiter gegeben werden und die datenbank befindet sich intern in der exe.
-
Hallo,
Nicht direkt. Du müsstest schon ein Installationstool bemühen (InstallShield, InnoSetup) oder selber sowas schreiben.
Wenn du die BDE verwendest, müsstest du sie zumindest auf dem Zielsystem installieren. Du könntest auch gleich auf eine datenbank verzichten und alles selber lösen. Bei einem "Wer wird Millionär"-Spiel sehe ich nicht unbedingt den bedarf für eine richtige Datenbank.
-
und zwar soll man bei start zwischen spiel und datenbank wählen.
wenn man spiel wählt, muss man das Themengebiet wählen, also Englisch Mathe ... aus dem dann die Fragen gestellt werden. Nun muss man auch antworten parat stellen eine frage und die möglichkeit um zu überprüfen ob die antwort richtig ist.wenn man auf datenbank klickt wird ein formular aufgemacht, in dem man sich die datenbank einträge anschaun kann und man kann datenbsätze löschen , editieren und einfügen. Nun nochma die frage. gibts eine möglichkeit die datenbank mit ins programm einzuschließen ohne danach bde benutzen zu müssen oder irgendwas der gleichen. Keine bde anwendung und der pfad wird automatisch ermittelt und die ganzen sachen. oder halt datenbank im prog. Bittee helft mir. Das ist so eine art abschlussarbeit
-
Wenn du unbedingt eine Datenbank verwenden willst, kannst du auch embedded Firebird nehmen.
http://www.ibexpert.info/de/documentation/%20%202.%20Datenbank/%20%204.%20Verbinde%20mit%20Datenbank/%20%201.%20Zugriff%20auf%20eine%20Firebird%20Embedded%20Datenbank/67279.html
http://www.destructor.de/firebird/1.5/embedded.htm
http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_document
Da mußt du nur zusätzlich eine oder mehrere dlls mitgeben.
Es gibt da noch weitere Varianten (SQLite oder so).
-
hey schon ma vielen dank, nur ändert das nichts an meinem prob da ich viel lieber access verwende und ich sowie nur access verwenden dürfen.
Nun habe ich die komponete Database auf meinem Formular. Da stelle ich Treiber und Database name ein. Nur ist mir jetzt fraglich wie ich den Aliasname dynamisch erzeuge. den Pfad zur datei ist nicht das schlimmst da man sich den pfad zurecht schnippeln kann nur fehlt mir das erstellen einer alias. ka wie ich da mahcen soll. bzw wenn ich eine Alias erstelle muss ich BDE benutzen oder?
Kann mir das vielleicht jemand erklären?
-
Wenn du TDatabase verwendest, greifst du über die BDE auf deine Datenbank zu. Du mußt also auf allen Zielrechnern die BDE installiert haben. Einen Alias kannst du auch zur Laufzeit einstellen TSession::AddAlias
-
kannst du mir das mit dem TSession::AddALias nochma genau erkläre? thx
-
Schau doch einfach in die BCB-Hilfe dazu. Da gibt es sogar ein Beispiel.
In diesem Beispiel wird für einen InterBase-Datenbank-Server ein Alias definiert.
TStringList MyList = new TStringList();
try
{
MyList->Add("SERVER NAME=IB_SERVER:/PATH/DATABASE.GDB");
MyList->Add("USER NAME=MYNAME");
Session1->AddAlias("NewIBAlias", "INTRBASE", MyList);
}
__finally
{
delete MyList;
}
-
"Fehler beim laden der IDAPI-Service-Bibliothek"
prozess wurde angehalten bla bla bla
was is da los?
TStringList *MyList = new TStringList(); __fastcall TfrmErweitern::TfrmErweitern(TComponent* Owner) : TForm(Owner) { int pos=0; for(int i=0;i<pfad.Length();i++){ if(pfad.SubString(i,1)=="\\"){ pos=0; pos=i+1; } } pfad.Delete(pos,pfad.Length()-pos+1); pfad+="Projekt.mdb"; MyList->Add("SERVER NAME="+pfad); MyList->Add("USER NAME="); Database1->Session->AddAlias("WerWirdMillionaery","MSACCESS",MyList); delete MyList; Database1->AliasName="WerWirdMillionaery"; Database1->Connected=true; }
-
Ist ja schon ein paar Jahre her, dass ich mal mit Access experimentiert habe, aber mußte man nicht einen ODBC-Eintrag erstellen und diesen dann als Alias verwenden?
-
ich bekomme den befehel IDAPI Service-Bibliothek nicht gefunden. Wo liegt der fehler. Was muss ich noch machen.
Database1->DatabaseName="dataDatenbank"; Database1->DriverName="MSACCESS"; Database1->LoginPrompt=false; int pos=0; for(int i=0;i<pfad.Length();i++){ if(pfad.SubString(i,1)=="\\"){ pos=0; pos=i+1; } } pfad.Delete(pos,pfad.Length()-pos+1); pfad+="Projekt97.mdb"; Database1->Params->Add("DATABASE NAME="+pfad); Database1->Open(); tTabelle->DatabaseName=Database1-> DatabaseName;
-
Joe_M. schrieb:
Ist ja schon ein paar Jahre her, dass ich mal mit Access experimentiert habe, aber mußte man nicht einen ODBC-Eintrag erstellen und diesen dann als Alias verwenden?
-
hmmm ka
-
meiner meinung nach ist ODBC überflüssig
-
gibt es hier keine experten in sachen datenbank einbindung? ^^
-
Datenbankexperten gibt es hier schon, aber ob man Access als Datenbank bezeichen darf, daran scheiden sich die Geister...

Wie gesagt, ich hab mit dem BCB 4 damals ein paar Test mit Access gemacht und da musste ich einen ODBC-Eintrag erstellen.
-
ja klar das mit dem ODBC stimmt schon. Zuerst ODBC dann BDE und dann in Borland Tabel mit Datenbank erknüpfen nur ist es halt unzumutbar das wenn ich dieses Spiel meiner Oma gebe, das die erst ma die BDE installiert und dann da alles einstellet. Jetzt ma so als krasses beispiel. Also es ist mir eigentlich ziemlich wurscht wie schwer es ist nur muss es doch eine möglichkeit geben das man eine datenbank dynamisch in eine exe einbindet und dann auf anderen rechner ohne odbc oder bde oder borland laufen lassen zu können. ich bin immer noch sehr dankbar übver alle antworten und hoff das mit jemand weiter helfen kann.
THX
-
Hallo
Wie gesagt du wurdest bereits auf Firebird embedded hingewiesen, da brauchst du keine ODBC oder Treiber. Auch SQLite sollte sowas bieten.
Es stellt sich natürlich die Frage ob man für 3 Tabellen eine dedizierte SQL-Datenbank braucht. Ein paar CSV oder XML-Dateien reichen dafür auch und lassen sich prima mit Builder-internen Mitteln laden.bis bald
akari
-
hmm ok ok ich versuch mich ma an Firebird ran. Hab zwar keine ahnung was das genau ist oder sein soll aber na gut. ne sql datenbank ist insofern wichtig da ich dynmisch die frage rausholen muss. und zwar sind es 5 themengebiete mit jeweils 15 stufen und pro stufe sind es min 3 frage und diese soll random ausgegeben werden. also alles net so einfach