Page 1 of 2 1 2 LastLast
Results 1 to 15 of 18

Thread: create database

  1. #1
    Senior Member
    Join Date
    Jul 2005
    Location
    Te mooi om waar te zijn..........
    Posts
    916

    create database

    Beste mensen,

    Ik maak voor mijn Delphi applicatie gebruik van een Firebird database. Die heb ik ooit eens aangemaakt via een SQL monitor. Binnen mijn Delphi app. maak ik gebruik van IB componenten. Nu wil ik binnen mijn app. een nieuwe database aanmaken met de onderstaanden code:

    HTML Code:
    with IBQuery1 do
      begin
        try
          SQL.Clear;
          SQL.Add('create database :db USER :us PASSWORD:pw;');
          ParamByName('db').value := 'C:\FBPO.GDB';
          ParamByName('us').value := 'SYSDBA';
          ParamByName('pw').value := 'masterkey';
          ExecSQL;
          SQL.Clear;
          SQL.Add('Commit;');
          ExecSQL;
          Memo1.Lines.Add('Database succesfully created!');
          OK := True
        except
          Memo1.Lines.Add('Database NOT succesfully created!');
          OK := False;
        end;
      end
    Maar dat schijnt niet te werken. Nu heb ik al van alles geprobeerd maar hij bijft klagen dat de inout fout is.

    Wat doe ik hier fout? Iemand een hint of oplossing?

    Alvast bedankt, Frank

  2. #2
    Parameters gebruik je volgens mij alleen voor waarden. Ik denk niet dat ze ook in deze situatie gebruikt kunnen worden.
    1+1=b

  3. #3
    Senior Member
    Join Date
    Jul 2005
    Location
    Te mooi om waar te zijn..........
    Posts
    916
    Zoals gezegd ik heb al vanalles geprobeerd dus ook deze code

    HTML Code:
    with IBQuery1 do
      begin
        try
          SQL.Clear;
          SQL.Add('create database C:\FBPO.GDB USER SYSDBA PASSWORD masterkey;');
          ExecSQL;
          SQL.Clear;
          SQL.Add('Commit;');
          ExecSQL;
          Memo1.Lines.Add('Database succesfully created!');
          OK := True
        except
          Memo1.Lines.Add('Database NOT succesfully created!');
          OK := False;
        end;
      end
    en dat geeft precies dezelfde foutmelding.

  4. #4
    Tja, ik heb dat FireBird nog nooit van dichtbij gezien, dus ik weet het niet zeker, maar ik kan me voorstellen dat de bestandsnaam tussen kwootjes moet.

    [edit]
    Dat is in ieder geval wat de eerste hit voorstelt als ik Google op Firebird Create Database. Het is wellicht ook wel handig of nodig om de username en password dan ook tussen quotes te zetten. Het zijn tenslotte string waarden.
    1+1=b

  5. #5
    Code:
    SET SQL DIALECT 3;
    
    CREATE DATABASE 'C:\JouwDatabase.FDB'
    USER 'SYSDBA' PASSWORD 'masterkey'
    PAGE_SIZE 16384
    DEFAULT CHARACTER SET WIN1252;
    Als je naar de metadata van een Firebird database kijkt.

  6. #6
    Senior Member
    Join Date
    Jul 2005
    Location
    Te mooi om waar te zijn..........
    Posts
    916
    bedankt voor jullie reacties. Maar ook als ik de code van Dees gebruik krijg ik foutmeldingen.

    Ik heb de volgende vraag: Kan ik vanuit een TIBQuery, die al aan een bestaande database gekoppeld is, een sql statement uitvoeren voor het creeren van een nieuwe database? Want dat is wat ik doe!!!

  7. #7
    Volgens mij kan dat niet vanuit een IBquery.

    Je hebt bij IBX een additionele set componenten, waarin ook een IBScript component zit. Volgens mij moet je die gebruiken voor dit soort zaken.

    Waarom wil je eigenlijk DDL uitvoeren vanuit je applicatie? Voor mij persoonlijk is dat een nono, tenzij ik een database beheertool zou maken, maar daarvan gaan er al 13 in een dozijn.

  8. #8
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,240
    b.v. als je een tool hebt dat een eigen, runtime te creeren datastructuur mapped op relationele db. De datastructuur is er buiten het programma niet.

    Een ander is voor redundante servers. Een te syncen server kan door een volautomatische app in sync gebracht worden zonder manuele interventie.

  9. #9
    Marco,

    Ik hoop dat ik je begrijp.............

    Een runtime te creeeren datastructuur zet je toch niet in een database? Ik doe zoiets normaal gesproken in memory, met memorydatasets.

    Redundante servers kan ik me iets bij voorstellen, maar ook dan is DDL voor mij een nono. Er zijn massa's tools die het voor je doen. Bovendien wil je dan volgens mij data syncen en geen DDL.

    DDL vanuit een applicatie is vragen om problemen, tenzij je het voor iets heel specifieks nodig hebt, zoals een databasemanager.

  10. #10
    Senior Member
    Join Date
    Jul 2005
    Location
    Te mooi om waar te zijn..........
    Posts
    916
    En dat is nu ook precies wat ik wil maken, een database beheertool.

    Dus hoe kan ik vanuit een applicatie een database maken?

    Ik heb ondertussen deze code ergens gevonden:

    HTML Code:
    var
        FBPO : TIBDatabase;
        FTrans : TIBTransaction;
        FQuery : TIBQuery;
    begin
      FBPO   := TIBDatabase.Create( nil );    //create IB database
      FTrans := TIBTransaction.Create( nil ); //create IB transaction
      FQuery := TIBQuery.Create( nil );       //create IB query
    
      // setup database
      with FBPO do
      begin
        DefaultTransaction        := FTrans;
        DatabaseName              := 'C:\FBPO.GDB';
        LoginPrompt               := False;
        Params.Values[ 'user_name' ] := 'SYSDBA';
        Params.Values[ 'password' ] := 'masterkey';
        CreateDatabase;
        Connected := True;
      end;
    
    
      // link query-database-transaction
      FTrans.DefaultDatabase := FBPO;
      FQuery.Database        := FBPO;
      FQuery.Transaction     := FTrans;
    maar bij de CreateDatabase komt hij met een foutmelding dat firebird de username en password niet kent! Hoe is dit op te lossen?

  11. #11
    Tip. Als je een foutmelding krijgt, post deze dan ook letterlijk in je vraag. Dat kan andere helpen om sneller je probleem te localiseren. Ook Googlen op een letterlijke foutmelding (of delen daarvan) wil namelijk nog weleens vruchtbaar blijken.
    1+1=b

  12. #12
    Senior Member
    Join Date
    Jul 2005
    Location
    Te mooi om waar te zijn..........
    Posts
    916
    Het kan natuurlijk altijd beter, zie bijlagen voor de exacte foutmelding.
    En geloof mij, voordat ik op deze site om hulp vraag heb ik al heel wat gegoogled
    Attached Thumbnails Attached Thumbnails Click image for larger version. 

Name:	foutmelding.PNG 
Views:	107 
Size:	11.8 KB 
ID:	3967  

  13. #13
    Werkt inloggen / Creeeren van een databse met een tool van de concurrentie en sysdba/masterkey wel Frank?

    Probeer anders eens IBO console te downloaden en kijk hoe ze het daar doen.

  14. #14
    Senior Member
    Join Date
    Jul 2005
    Location
    Te mooi om waar te zijn..........
    Posts
    916
    Met een extern tool kan ik gewoon een nieuwe db aanmaken en inloggen met sysdba/masterkey. Dat is geen probleem.

    Ik heb heel wat voorbeelden gezien hoe ze binnen Delphi een nieuwe db (proberen) aanmaken. Dat is precies de code zoals ik hem hierboven heb gepost. Maar de meeste voorbeelden klagen over hetzelfde probleem als wat ik heb. Echter een oplossing zie ik nergens!!!!!

  15. #15
    Heb je de goede GDS32.dll in gebruik, die uit je firebird install dus (je moet fbclient.dll renamen naar gds32.dll zoals in de install docs van FB is te lezen).

    Het beste kun je die even zetten in je output directory van je eigen applicatie.

    Wat gebruik je als connectiestring?

    Welke versie van Firebird gebruik je, 1.5.x of 2? Volgens mij zijn er in 2 wat API wijzigingen en ik vraag me af of IBX dat nog gaat ondersteunen.

Page 1 of 2 1 2 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •