Mit PureBasic auf eine SQL Datenbank zugreifen!!!! Hilfe!

Für allgemeine Fragen zur Programmierung mit PureBasic.
razor
Beiträge: 16
Registriert: 28.07.2006 19:55

Mit PureBasic auf eine SQL Datenbank zugreifen!!!! Hilfe!

Beitrag von razor »

Hallo Leute, ich habe ein kleines Problemchen!!
Ich möchte mit PureBasic auf meine SQL Datenbank zugreifen, Jetzt die Frage, geht das nur über Microsoft MS-DOS Konsole?
Wie kann ich es machen dass die Abfrage in einem normalen Windows Fester oder ähnlichem Stattfindet?
Und wie kann ich es machen, dass ich bei "Command$ = Input()" den Befehl nicht mehr manuell eingeben muss, sondern dass es automatisch abläuft ? Der Befehl lautet : select top 100 *from Datenbank1

Ich wäre euch sehr dankbar wenn ihr mir etwas nachhelfen könnt!


Hier ist der Code:

Code: Alles auswählen


If InitDatabase() = 0
  MessageRequester("Error", "Can't initialize Database (ODBC v3 or better) environment", 0)
  End
EndIf

OpenConsole()

Dim DatabaseType.s(4)
DatabaseType(0) = "Unknown"
DatabaseType(1) = "Numeric"
DatabaseType(2) = "String"
DatabaseType(3) = "Float"



If ExamineDatabaseDrivers()
  While NextDatabaseDriver()
    PrintN(DatabaseDriverName()+" - "+DatabaseDriverDescription())
  Wend
EndIf


If OpenDatabaseRequester(0)

  PrintN("Database successfully opened !")
  PrintN("Type EXIT to quit.")
  PrintN("Command example: select * from user;")

Repeat
    Print("SQL Command: ")
    Command$ = Input()
    PrintN("")

    Select UCase(Command$)
      Case "EXIT"
        Quit = 1


      Default

        If DatabaseQuery(Command$)

          NbColumns = DatabaseColumns()
          PrintN("NbColums: " + Str(NbColumns))

          For k=0 To NbColumns-1
            PrintN(DatabaseColumnName(k) + " - " + DatabaseType(DatabaseColumnType(k)))
          Next

          PrintN("")
          Print ("Press return to continue") : Input()
          PrintN("")
          PrintN("Query Result -------------------------------------")

          While NextDatabaseRow() 
            For i=1 To NBColumns-1 
              Print(GetDatabaseString(i)+"  ") 
            Next i
            PrintN("") 
          Wend 

          PrintN("--------------------------------------------------")
        Else
          PrintN("Bad Query !")
        EndIf
    EndSelect
  Until Quit = 1
Else
 MessageRequester("Info", "Operation canceled", 0)
EndIf

End
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Mit PureBasic auf eine SQL Datenbank zugreifen!!!! Hilfe

Beitrag von Kiffi »

> Ich möchte mit PureBasic auf meine SQL Datenbank zugreifen,

Microsoft SQLServer?

Welche PureBasic-Version verwendest Du? 3.94 oder 4.0? Demo oder Full?

> Jetzt die Frage, geht das nur über Microsoft MS-DOS Konsole?

nein, das geht auch in einer normalen Windows-Applikation

> Der Befehl lautet : select top 100 *from Datenbank1

Der Befehl lautet eher: Select Top 100 * From Tabelle ;-)

Es gibt einige Sachen zum Thema Datenbanken hier im Forum. Such auch
mal nach ODBC. Wenn Du die Fragen oben beantwortet hast, kann ich Dir
weitere Infos geben.

Grüße ... Kiffi
a²+b²=mc²
razor
Beiträge: 16
Registriert: 28.07.2006 19:55

Beitrag von razor »

Hallo, danke für die schnelle Antwort!!!
Es ist die Version 3.92 und ja ich verwende den Microsoft SQL Server.
Es isr die kostenlose PureBasic Version.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Eine kostenlose Purebasic Version gibt es nicht. Höhstens die Demo. Und
selbst für die Demo ist deine Version ziemlich veraltet.
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

@razor:

hier ein kleiner Code, der verdeutlicht, wie Du auf die Datenbank
zugreifen kannst:

Was Du beachten musst:

* Es gibt mittlerweile eine Demo von PB4.0. Lade diese herunter und
installiere sie. Es macht eigentlich keinen Sinn mehr, mit der 3.94 zu
arbeiten (es sei denn, Du hast ein grösseres Projekt unter 3.94 erstellt und
kannst/willst dieses -- aus welchen Gründen auch immer -- nicht
konvertieren).

* Bevor Du den Code laufen lässt, musst Du Dir eine ODBC-Verbindung zu
Deinem SQLServer einrichten. Den Namen, den Du hier vergibst, musst
Du als Parameter bei OpenDatabase() eintragen. Es gibt auch eine
Möglichkeit, eine ODBC-Verbindung zur Laufzeit erstellen zu lassen, aber
das würde ich Dir dann bei Bedarf und Interesse erst später erklären wollen.

Code: Alles auswählen

Enumeration
  #myWindow
  #myEditorGadget
EndEnumeration
  
OpenWindow(#myWindow, #PB_Ignore, #PB_Ignore, 300, 300, "DB", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
  
CreateGadgetList(WindowID(#myWindow))
  
EditorGadget(#myEditorGadget, 0, 0, 300, 300)
  
InitDatabase()
  
DB = OpenDatabase(#PB_Any, "Deine_ODBC_Connection", "DeinUsername", "DeinPasswort")
  
If DB 
  
  Debug DB  
  
  If DatabaseQuery(DB, "Select Top 10 * From DeineTabelle")
    
    ColumnCount = DatabaseColumns(DB) - 1
    
    While NextDatabaseRow(DB)
      DataBaseRow$=""
      For ColumnCounter = 0 To ColumnCount
        DataBaseRow$ + GetDatabaseString(DB, ColumnCounter) 
        If ColumnCounter < ColumnCount
          DataBaseRow$ + ";"
        EndIf
      Next
      AddGadgetItem(#myEditorGadget, -1, DataBaseRow$)
    Wend
    
  EndIf
  
  CloseDatabase(DB)
  
EndIf
  
Repeat
  
Until WaitWindowEvent()=#PB_Event_CloseWindow
Grüße ... Kiffi

P.S.: Bitte in Zukunft Cosspostings vermeiden!
a²+b²=mc²
razor
Beiträge: 16
Registriert: 28.07.2006 19:55

Beitrag von razor »

Danke für alle die Antworten leute, werde es jetzt mal ausprobieren *Kiffi*

werde auch die 4.0 Demo herunterladen. mal gucken :mrgreen:
razor
Beiträge: 16
Registriert: 28.07.2006 19:55

Beitrag von razor »

Kiffi, ich habe noch eine Frage an dich, oder an euch alle Leute!!!
Momentan kommt nur ein leeres Fenster beim starten des Scripts...

Meine Computerdatenquelle heisst "System1" , mein Benutzername ist "admin" und es gibt kein Passwort. Ist diese Zeile dann richtig???

DB = OpenDatabase(#PB_Any, "System1", "admin", "")

Was ist denn "#PB_Any"? was muss ich da hin schreiben?

Danke Kiffi, der Aufbau gefällt mir, nicht mehr die MS Kosole :allright:
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Momentan kommt nur ein leeres Fenster beim starten des Scripts...

<nörgel>
das ist kein Script. Das ist ein kompiliertes Programm ;-)
</nörgel>

> Meine Computerdatenquelle heisst "System1" , mein Benutzername ist
> "admin" und es gibt kein Passwort. Ist diese Zeile dann richtig???

jepp, die Zeile ist mit diesen Angaben richtig. Kontrolliere mal bitte Deine
ODBC-Verbindung, die Du erstellt hast. Da gibt's einen Knopf "Verbindung
testen".

> Was ist denn "#PB_Any"? was muss ich da hin schreiben?

#PB_Any ist schon richtig. Damit weist Du PureBasic an, Dir eine freie
Datenbanknummer zuzuweisen. Diese steht dann in der Variablen DB, die
Du dann für Deine weiteren Befehle nutzen musst.

Grüße ... Kiffi
a²+b²=mc²
razor
Beiträge: 16
Registriert: 28.07.2006 19:55

Beitrag von razor »

hallo, also die Verbindung besteht.
Ich komme auch mit meinem ursprünglichen Programm (aus der PureBasic Hilfe---SQL Beispiel) auf die Datenbank.
Es geht mir nur darum dass die Anmeldung automatisch erfolgt und dass das alles nicht in der Console geöffnet wird.

Also mit deinem Programm Kiffi, öffnet sich schon ein weisses Fenster, das ist sehr gut.
Ich weiss nur nicht, was ich noch verändern muss, dass im Fenster auch was erscheint :shock: Wenn die Anmeldedaten so stimmen!!!

PS: Apropo freie Datenbanknummer, ich habe mehrere Datenbanken auf dem Server, muss ich da eine bestimmte nummer zuweisen anstatt #PB_any?
razor
Beiträge: 16
Registriert: 28.07.2006 19:55

Beitrag von razor »

Suuuper jetzt klappts, war mein Fehler !!!! :oops:

Hatte doch ein password drin, sorry

Danke für die Hilfe :allright:

PS: weisst du wie ich in dem Fenster mit den Ganzen Daten scrollen kann, es werden nur die ersten datensätze angezeigt.

OK habs auch hinbekommen :allright:

Danke
Zuletzt geändert von razor am 31.07.2006 17:51, insgesamt 1-mal geändert.
Antworten