Avatar billede Greenland Nybegynder
02. september 2010 - 14:33 Der er 6 kommentarer

Databae i memory

Hej,

Er der nogen der kan sige mig hvordan jeg kan have en database inde i mit exe program uden nogen tilhørende extra filer/installation

Dette skal anvendes til at man kan køre programmet som en demo
uden at at skulle installere en rigtig database

Når programmet ikke er en demo længere skal det så pege på en rigtig underliggende mssql database !

Det jeg IKKE ønsker er at skulle ændre eksisterende kode i programmet til at tage højde for om programmet nu kører i Demo-mode eller ej, dvs at alle sql operationer skal virke på både memory databasen og den underliggende mssql database !

Opbygningen af programmet er den at jeg har en ado-connection component der vha en connectionstring peger på min underliggende database. Alle ADOQuerys i programmet er så koblet op via ado-connection componenten.

Jeg tænker at jeg i tilfælde af at programmet skal køre demo (og dermed i en "kunstig" intern/memory database) at jeg blot kan ændre ado-connection således at den nu peger på min interne database !!!

Er dette muligt, og har i nogen gode ideer/forslag ?

Jeg har set noget der hedder TClientdataset, men så vidt jeg har forstået kan man ikke køre en Select * from table på den

mvh

Greenland
Avatar billede hrc Mester
02. september 2010 - 14:38 #1
Det kan man nu godt gøre på en TClientDataSet. Hvis det ikke er en kompleks struktur du skal håndtere så kan de bruges. Det er vist det letteste. Alle data kan du linke til exe-filen og indlæse ved start.
Avatar billede Greenland Nybegynder
02. september 2010 - 15:21 #2
Hej hrc, og tak for input:

Jeg havde håbet på at ClientDataSet kunne anvendes, men jeg kunne ikke få det til at virke med en query
Jeg kunne godt få den til at anvende en xml fil til de underliggende data, men uden en query component

Men jeg kunne ikke finde ud af at knytte en query component til den således at jeg kunne fyre select statements af ?

Har du evt. noget info eller noget kode som viser hvordan dette kan gøres ?

::greenland::
Avatar billede vallemanden Nybegynder
02. september 2010 - 16:35 #3
Avatar billede Greenland Nybegynder
02. september 2010 - 23:21 #4
Hej igen, Ja det ser forholdsvis spændende ud, men det er lidt træls at betale licens hvert år .....


Håber stadig at det er muligt at lave med tclientdataset !!! :-)

::greenland::
Avatar billede vallemanden Nybegynder
03. september 2010 - 09:14 #5
? kbmMemTable er gratis!!

"kbmMemTable CodeGear Edition, which is free to use, is included in kbmMW CodeGear Edition which is also free.

Both kbmMemTable CodeGear Edition and kbmMW CodeGear Edition is delivered without source."
Avatar billede hrc Mester
03. september 2010 - 09:57 #6
Et TClientDataSet kan virke på to måder: Enten forbundet til en QTuery-afart via en TDataSetProvider hvor TQuery-tingesten har SQL'en mens felterne defineres i TClientDataSettet (dbl. klik på komponenten). Det ved jeg fungerer.

Alternativet med at indlæse data via en XML-struktur, har jeg aldrig prøvet. Her opfører TClientDataSættet sig som en TTable og ... arrh. Det vil ikke virke med SQL.

Jeg er blank for hvad man kan gøre. Umiddelbart kan jeg ikke forstå at kbmMemTable skulle gøre en forskel. Det er stadig bare et datasæt der er hentet ind i hukommelsen, ikke?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester