Seite 1 von 1

Datenbank

Verfasst: 19.09.2006 14:50
von Martin66119
Guten Tag!

Kann mir bitte jemand nochmal kurz auf die Sprünge helfen wie ich daten in eine Datenbank schreibe und auch herauslesen kann.

- die Datenbank heißt PureBasic.
- die Tabelle, die in der Datenbank bereits vorhanden ist heißt Firmeninfo
- die Spalten haben den Namen ..., Strasse, ....

Wie bekomme ich es hin in die Datenbank PurBasic, in die Tabelle Firmeninfo in die Spalte Strasse was zu schreiben (in neue Zeile oder in bereits bestehende) bzw. aus einer bestehenden zu lesen.


Code: Alles auswählen

 Enumeration 
 #Datenbank_1
 EndEnumeration 
 
 Ergebnis = InitDatabase()
 
 
    If Ergebnis = 0 
      ;MessageRequester("PureBasic Datenbank", "ODBC nicht verfügbar ",#PB_MessageRequester_Ok ) 
    Else
      ;MessageRequester("PureBasic Datenbank", "ODBC  verfügbar ",#PB_MessageRequester_Ok ) 
    EndIf 
    
    Ergebnis = OpenDatabase(#Datenbank_1,"PureBasic","Admin","")  
    
    If Ergebnis = 0 
      ;MessageRequester("PureBasic Datenbank", "Datenbank nicht verfügbar ",#PB_MessageRequester_Ok ) 
    Else
      ;MessageRequester("PureBasic Datenbank", " Datenbank verfügbar ",#PB_MessageRequester_Ok ) 
    EndIf
    
;-----------------------------------------------------------------------    
    
    Ergebnis = DatabaseQuery(0, "Select * from Firmeninfo" )
    If Ergebnis = 0 
      MessageRequester("PureBasic Datenbank", "Datenbank nicht verfügbar ",#PB_MessageRequester_Ok ) 
    Else
      MessageRequester("PureBasic Datenbank", " Datenbank verfügbar ",#PB_MessageRequester_Ok ) 
    EndIf
    
    Ergebnis = FirstDatabaseRow(#Datenbank_1)

    
    NbColumns = DatabaseColumns(#Datenbank_1)
    MessageRequester("" ,StrU(NbColumns,#Word),0)   
Danke für die Hilfe

Verfasst: 19.09.2006 16:35
von Karl
Hallo Martin,

hast du schon mal die OnlineHilfe befragt? Da steht das eigentlich ziemlich genau drin.
Beispiel:
; Zuerst stellen wir eine Verbindung zu der 'employee' (Angestellten) Tabelle her
;
If DatabaseQuery(#DatenBank, "SELECT * FROM employee") ; Ermittelt alle Einträge in der 'employee' Tabelle

While NextDatabaseRow(#Datenbank) ; alle Einträge durchlaufen
Debug GetDatabaseString(#Datenbank, 0) ; Inhalt vom ersten Feld anzeigen
Wend

Else
MessageRequester("Fehler", "Kann die folgende Abfrage nicht ausführen: "+DatabaseError())
EndIf

Für Einfüge- und Update-Operationen gibt es die SQL-Statements Insert Into [Tabelle] (Feldliste) VALUES (Werteliste) und Update [Tabelle] Set [Feld] = [Wert]

Gruß Karl

Verfasst: 19.09.2006 17:14
von bobobo

Verfasst: 19.09.2006 18:57
von HemSA
Hallo Martin,
ich habe mal vor kurzem was programmiert was die Speicherung von Daten angeht.
In meinem Beispiel habe ich als Beispiel 3 Stringelder mit bestimmter Länge, die dann zusammengefasst in eine Zeile von einer Textdatei gespeichert werden. Und zwar immer anhängend an die letzte Zeile. Das Auslesen ist ja dann nicht mehr schwierig, da du die Feldlängen ja kennst mit:

-Ergebnis$ = Left(String$, Laenge)
-Ergebnis$ = Mid(String$, StartPosition, Laenge)
-Ergebnis$ = Right(String$, Laenge


Der Code ist in PB 4, wenn du ihn in PB 3.94 haben willst, dann schau mal in PureBasic Lounge rein.

Code: Alles auswählen

    
If OpenWindow(0,216,0,500,300,"Testfenster",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar ) 
  If CreateGadgetList(WindowID(0)) 
      TextGadget(1, 20, 20, 150, 20, "Dateneingabefenster") 
      TextGadget(2, 20, 60, 40, 20, "Text1")                        
      StringGadget(3, 60, 60, 60, 20, "")                           ;Eingabefeld 
      TextGadget(4, 20, 100, 40, 20, "Text2") 
      StringGadget(5, 60, 100, 100, 20, "") 
      TextGadget(6, 20, 140, 40, 20, "Text3") 
      StringGadget(7, 60, 140, 150, 20, "")      
      ButtonGadget(8, 60, 200, 100, 30, "Daten hinzufügen") 
      ButtonGadget(9, 200, 200, 100, 30, "Beenden") 
      TextGadget(10, 150, 60, 380, 20, "Nur die ersten 10 Zeichen werden übernommen") 
      TextGadget(11, 180, 100, 380, 20, "Nur die ersten 15 Zeichen werden übernommen") 
      TextGadget(12, 230, 140, 380, 20, "Nur die ersten 25 Zeichen werden übernommen") 
  
  
  EndIf 

  Repeat 
    EventID = WaitWindowEvent() 
    If EventID = #PB_Event_CloseWindow 
      Quit = 1 
    EndIf 
    If EventID = #PB_Event_Gadget 
      
      
      
        If EventGadget()=8 
      
             text1s.s = GetGadgetText(3)                             ;auslesen vom Stringgadget 
             ergebnis1s.s = LSet(text1s.s, 10)                       ;auffüllen/begrenzen des Stringgadget auf 10 Zeichen 
             text2s.s = GetGadgetText(5) 
             ergebnis2s.s = LSet(text2s.s, 15) 
             text3s.s = GetGadgetText(7) 
             ergebnis3s.s = LSet(text3s.s, 25) 
             textgesamts.s = ergebnis1s.s+ergebnis2s.s+ergebnis3s.s  ;zusammenlegen von den Feldern ( Gesamttext ) 
      
          If OpenFile(1,"C:\versuch.txt") 
              laengew.w= Lof(1)                                      ; ermitteln der Dateilaenge              
              FileSeek(1,laengew.w)                                        ; setzt den Zeiger ans Dateiende            
      
              WriteStringN(1,textgesamts.s)                          ;schreibt den Gesamttext an das Ende von der Datei 
      
              CloseFile(1)                                           ;schließt die Datei 
          EndIf 
        
        SetGadgetText(3, "")                                         ;Eingabefelder werden gelöscht nachdem der 
        SetGadgetText(5, "")                                         ;"Daten hinzufügen" BUTTON gedrückt wurde 
        SetGadgetText(7, "") 
        
        EndIf 
      
    
        If EventGadget()=9 
         Quit = 1 
        EndIf 
            
    EndIf 
 Until Quit=1 
  
EndIf 
End


Datenbank

Verfasst: 20.09.2006 08:23
von Martin66119
Guten Morgen!

Danke für die Hilfe. Nun habe ich verstanden wie es gehen soll und noch besser es klappt auch.

Martin