Windows / mySQL Server Daten auslesen und schreiben

Fragen zu allen anderen Programmiersprachen.
Liss
Beiträge: 9
Registriert: 27.06.2016 14:06

Windows / mySQL Server Daten auslesen und schreiben

Beitrag von Liss »

Hallo,

suche immer noch eine Programmiersprache wie Purebasic die auch einfach mySQL xDaten aus einem Server lesen und schreiben kann.
Leider suche ich hier im PureBoard vergeblich nach einem Vernünftigen Beitrag. ( Vieleicht ist PureBasic nicht so gut wie man es beschreibt )
Brauche eine Vernünftiges Schnippsel auf den man aufbauen kann ohne den Code Stundenlang zu analisieren und am schluss merkt das is Irreführend.
Ps.: vieleicht hat auch schon jemand einen keinen mySQLAdmin in Purebasic geschrieben.

Noch zum Hintergrund meines vorhabens: möchte nach eingabe der "id" die dazugehörigen Daten sehen, und ensprechend ändern können.
(id)
[Datenanzeige$row['NT']] (Save)
[Datenanzeige$row['alloc']] (Save)
[Datenanzeige$row['ident] (Save)
usw.

hier einmal einen kutzen Ablauf wie ich schon einmal in PHP geschrieben habe.
Möchte das jedoch in einem keinen Programm haben das jeder Mitarbeiter benutzen kann ohne XAMPP installieren zu müssen.


// Login SQL Datenbank
$pdo = new PDO('mysql:host=server1;dbname=dbname', 'loggin', 'passwort');

// Abfrage ob SQL Fehler
.....
// Abfrage wenn Datensatz Leer oder nicht vorhanden.
..

// Schleife Daten in eine ARRY übergeben und ausgeben
$Pid = isset($_GET['id']) ? $_GET['id'] : "0";
// echo "Pid: $Pid<br />";
$sql = "SELECT * FROM Datenbanktabelle WHERE id = $Pid";
// -- Daten aus der Array wiedergeben --
foreach ($pdo->query($sql) as $row)
{

echo '<br><table border="1">'; // Table: rechte Spalte
{
// Table: in der Tabelle
echo "<tr>";
echo "<td><b>id:</td><td><b>".$row['id']."</td>";
echo "</tr><tr>";
echo "<td>NT (Type):</td><td>".$row['NT']."</td>";
echo "</tr><tr>";
echo "<td>alloc (Verpackung):</td><td>".$row['alloc']."</td>";
echo "</tr><tr>";
echo "<td><i>ident[DC;LB;SN]:</td><td>".$row['ident[DC;LB;SN]']."</td>";
echo "</tr><tr>";
echo "<td><i>notes[Tpl;Pos]:</td><td>".$row['notes[Tpl;Pos]']."</td>";
echo "</tr><tr>";
echo "<td>stocked (geliefert):</td><td>".$row['stocked']."</td>";
echo "</tr><tr>";
echo "<td><b>integrated (Entnommen):</td><td><b>".$row['integrated']."</td>";
echo "</tr><tr>";
echo "<td><b>absolut (Rest):</td><td><b>".$row['stock[absolut]']."</td>";
echo "<tr>";
echo "<td><b>usenote (Lgerort):</td><td><b>".$row['usenote']."</td>";
echo "<tr>";
}
echo "</table>";
// ENDE: -- Daten aus der Array wiedergeben //
}
// ENDE: Abfrage wenn Datensatz Leer oder nicht vorhanden.
}

Danke in voraus
Josef
Benutzeravatar
mhs
Beiträge: 224
Registriert: 11.01.2009 16:30
Wohnort: Graben
Kontaktdaten:

Re: Windows / mySQL Server Daten auslesen und schreiben

Beitrag von mhs »

Hallo Josef,

PureBasic kann wie viele andere Programmiersprachen per ODBC und dem MySQL Connector auf MySQL Datenbank zugreifen. Eine passenden Code Schnippsel habe ich gerade nicht zur Hand, mache das aber in vielen meiner Anwendungen ohne Probleme.

Das lässt sich auch mit der Demoversion von PureBasic testen, das Kapitel Database in der Hilfe sollte für jemanden der per PHP auf Datenbank zugreifen kann, kein Problem sein. Der größte Unterschied zu PHP ist, dass du in den MySQL Connector installieren und in der Systemsteuerung unter Datenquellen / ODBC einen Eintrag für die ODBC Verbindung eintragen musst. Danach ist der Zugriffa die Datenbank per OpenDatabase, DatabaseQuery, DatabaseUpdate, etc analog zu PHP möglich.
Michael Hack

Michael Hack Software :: Softwareentwicklung | Webentwicklung | IT-Dienstleistungen
www.michaelhacksoftware.de :: www.mh-s.de :: www.michael-hack.de
Liss
Beiträge: 9
Registriert: 27.06.2016 14:06

Re: Windows / mySQL Server Daten auslesen und schreiben

Beitrag von Liss »

mhs hat geschrieben:Hallo Josef,

PureBasic kann wie viele andere Programmiersprachen per ODBC und dem MySQL Connector auf MySQL Datenbank zugreifen. Eine passenden Code Schnippsel habe ich gerade nicht zur Hand, mache das aber in vielen meiner Anwendungen ohne Probleme.

Das lässt sich auch mit der Demoversion von PureBasic testen, das Kapitel Database in der Hilfe sollte für jemanden der per PHP auf Datenbank zugreifen kann, kein Problem sein. Der größte Unterschied zu PHP ist, dass du in den MySQL Connector installieren und in der Systemsteuerung unter Datenquellen / ODBC einen Eintrag für die ODBC Verbindung eintragen musst. Danach ist der Zugriffa die Datenbank per OpenDatabase, DatabaseQuery, DatabaseUpdate, etc analog zu PHP möglich.

Danke Michael,
Aufgrund das mySQL ja schon mit den ODBC Treiber installiert wurde, war das gleich ein ansporn um zu sehen ob alles bei mir auf den Neusten Stand ist.
Jedoch finde ich das immer noch zu verwirrend was in dem Kapitel "Database" unter der Hilfe steht. Reihenfolg wie und was... Zuviele Befehle. Darum hatte ich ja angefragt.
Zudem scheint es in den Forum viele zu geben die letztendlich eine Lösung suchen das der letzten Version von Purebaic 2016 zugrunde liegt.
Vieleicht könntest du ja einmal Funktionierende Beispiele geben wie man eine bestehende mySQL Datenbak ---> Datenbankverbindung aufbauen - MySQL Fehlermeldungen - Simple Datenabfrage per SELECT - Daten einfügen per INSERT.
(Hier ein Link für alle die einen sehr guten Einstig in mySQL/PHP haben möchten http://www.php-einfach.de/mysql-tutoria ... urs-mysql/ ) so sollte auch eine Purebasic mySQL Anleitung aussehen)

schöne Grüße
Josef
Benutzeravatar
mhs
Beiträge: 224
Registriert: 11.01.2009 16:30
Wohnort: Graben
Kontaktdaten:

Re: Windows / mySQL Server Daten auslesen und schreiben

Beitrag von mhs »

Code: Alles auswählen

Define.i db, Id
Define.s Query, Name, Beruf

UseODBCDatabase()

; === Datenbank öffnen
db = OpenDatabase(#PB_Any, "meine-db", "", "", #PB_Database_ODBC)

If Not db
  Debug "Keine Verbindung zur Datenbank"
  End
EndIf

; === 1. Insert
Query = "INSERT INTO Tabelle (Name, Beruf) VALUES (?, ?)"

SetDatabaseString(db, 0, "Max Mustermann")
SetDatabaseString(db, 1, "Hausmeister")

If Not DatabaseUpdate(db, Query)
  Debug "Fehler bei Insert"
EndIf

; === 2. Insert
Query = "INSERT INTO Tabelle (Name, Beruf) VALUES (?, ?)"

SetDatabaseString(db, 0, "Albert Einstein")
SetDatabaseString(db, 1, "Genie")

If Not DatabaseUpdate(db, Query)
  Debug "Fehler bei Insert"
EndIf

; === Select der Einträge
Query = "SELECT Id, Name, Beruf FROM Tabelle"

If Not DatabaseQuery(db, Query)
  Debug "Fehler bei Select"
EndIf

While NextDatabaseRow(db)

  Id    = GetDatabaseLong  (db, 0)
  Name  = GetDatabaseString(db, 1)
  Beruf = GetDatabaseString(db, 2)

  Debug "Eintrag " + Str(Id) + ": " + Name + " - " + Beruf
  
Wend

FinishDatabaseQuery(db)

; === Datenbank schliessen
CloseDatabase(db)
Ich hab das nur mal eben schnell runtergetippt also große Orientierung wie Datensätze eingefügt und wieder gelesen werden können. Der Ablauf und die Funktionen decken sich mit einer Mischung aus klassischer DB Abfrage per PHP und PDO (Binding Values).

Die Tabelle hätte in dem Fall drei Spalten Id INT (PK, Autoincrement), Name VARCHAR und Beruf VARCHAR. In der ODBC Verwaltung müsste eine Verbindung "meine-db" zur Datenbank eingetragen werden.
Michael Hack

Michael Hack Software :: Softwareentwicklung | Webentwicklung | IT-Dienstleistungen
www.michaelhacksoftware.de :: www.mh-s.de :: www.michael-hack.de
Liss
Beiträge: 9
Registriert: 27.06.2016 14:06

Re: Windows / mySQL Server Daten auslesen und schreiben

Beitrag von Liss »

mhs hat geschrieben:

Code: Alles auswählen

Define.i db, Id
Define.s Query, Name, Beruf

UseODBCDatabase()

; === Datenbank öffnen
db = OpenDatabase(#PB_Any, "meine-db", "", "", #PB_Database_ODBC)

If Not db
  Debug "Keine Verbindung zur Datenbank"
  End
EndIf

; === 1. Insert
Query = "INSERT INTO Tabelle (Name, Beruf) VALUES (?, ?)"

SetDatabaseString(db, 0, "Max Mustermann")
SetDatabaseString(db, 1, "Hausmeister")

If Not DatabaseUpdate(db, Query)
  Debug "Fehler bei Insert"
EndIf

; === 2. Insert
Query = "INSERT INTO Tabelle (Name, Beruf) VALUES (?, ?)"

SetDatabaseString(db, 0, "Albert Einstein")
SetDatabaseString(db, 1, "Genie")

If Not DatabaseUpdate(db, Query)
  Debug "Fehler bei Insert"
EndIf

; === Select der Einträge
Query = "SELECT Id, Name, Beruf FROM Tabelle"

If Not DatabaseQuery(db, Query)
  Debug "Fehler bei Select"
EndIf

While NextDatabaseRow(db)

  Id    = GetDatabaseLong  (db, 0)
  Name  = GetDatabaseString(db, 1)
  Beruf = GetDatabaseString(db, 2)

  Debug "Eintrag " + Str(Id) + ": " + Name + " - " + Beruf
  
Wend

FinishDatabaseQuery(db)

; === Datenbank schliessen
CloseDatabase(db)
Ich hab das nur mal eben schnell runtergetippt also große Orientierung wie Datensätze eingefügt und wieder gelesen werden können. Der Ablauf und die Funktionen decken sich mit einer Mischung aus klassischer DB Abfrage per PHP und PDO (Binding Values).

Die Tabelle hätte in dem Fall drei Spalten Id INT (PK, Autoincrement), Name VARCHAR und Beruf VARCHAR. In der ODBC Verwaltung müsste eine Verbindung "meine-db" zur Datenbank eingetragen werden.

Danke Michael,

man kan zwar mit deiem vorschlag ein kleine Datenbank anlegen, aber das entspicht nicht der Anfrage.
Vieleicht hatte ich mich falsch ausgedrückt oder mein PHP Beispiel war nicht gut zu lesen.
Es soll eine bestehende Datenbank vom server abgefragt werden. - OpenDatabase(0, "host=server1", "user", "passwort")
host.s = "server1"
user.s = "login"
passwd.s = "passwort"
db.s = "dbname"
SQLtempl.s = "template"
Die Datenmenge ist noch nicht bestimmt und fängt mit einer "id" an.

bis bald Josef
Benutzeravatar
mhs
Beiträge: 224
Registriert: 11.01.2009 16:30
Wohnort: Graben
Kontaktdaten:

Re: Windows / mySQL Server Daten auslesen und schreiben

Beitrag von mhs »

Vieleicht hatte ich mich falsch ausgedrückt oder mein PHP Beispiel war nicht gut zu lesen.
Sorry aber ich hab auch nur auf die Schnelle ein kleine Beispiel zusammengebastelt, das eigentlich alle ODBC Funktionen zeigt, die man benötigt um auf eine bestehende Datenbank zuzugreifen.
  • Es wird eine Datenbankverbindung aufgebaut
  • Es werden Datensätze eingefügt
  • Es werden Datensätze selektiert und ausgegeben
Jetzt fehlt eigentlich nur noch ein ändern und löschen von Datensätzen und das brauche ich ja nicht separat aufzuführen, denn dazu muss lediglich das MySQL Statement von INSERT auf UPDATE bzw. DELETE geändert werden, was mit PureBasic nichts zu tun hat. Der PureBasic-seitige Aufbau ist genau der Gleiche wie bei einem Insert.

Zum Selektieren/Ändern über die ID muss lediglich die Query um das "WHERE Id = X" ergänzt werden.
Michael Hack

Michael Hack Software :: Softwareentwicklung | Webentwicklung | IT-Dienstleistungen
www.michaelhacksoftware.de :: www.mh-s.de :: www.michael-hack.de
Liss
Beiträge: 9
Registriert: 27.06.2016 14:06

Re: Windows / mySQL Server Daten auslesen und schreiben

Beitrag von Liss »

mhs hat geschrieben:
Vieleicht hatte ich mich falsch ausgedrückt oder mein PHP Beispiel war nicht gut zu lesen.
Sorry aber ich hab auch nur auf die Schnelle ein kleine Beispiel zusammengebastelt, das eigentlich alle ODBC Funktionen zeigt, die man benötigt um auf eine bestehende Datenbank zuzugreifen.
  • Es wird eine Datenbankverbindung aufgebaut
  • Es werden Datensätze eingefügt
  • Es werden Datensätze selektiert und ausgegeben
Jetzt fehlt eigentlich nur noch ein ändern und löschen von Datensätzen und das brauche ich ja nicht separat aufzuführen, denn dazu muss lediglich das MySQL Statement von INSERT auf UPDATE bzw. DELETE geändert werden, was mit PureBasic nichts zu tun hat. Der PureBasic-seitige Aufbau ist genau der Gleiche wie bei einem Insert.

Zum Selektieren/Ändern über die ID muss lediglich die Query um das "WHERE Id = X" ergänzt werden.

OK
komme schon weiter.
Demtotrotz - zu meiner Konstilation Funktioniert das nicht.

db = OpenDatabase(#PB_Any, "host=server1 dbname=db1", " ", " ", #PB_Database_ODBC)
.
[Keine Verbindung zur Datenbank]

zudem verstehe ich das #PB_Any immer noch nicht.

Josef
Benutzeravatar
mhs
Beiträge: 224
Registriert: 11.01.2009 16:30
Wohnort: Graben
Kontaktdaten:

Re: Windows / mySQL Server Daten auslesen und schreiben

Beitrag von mhs »

Der größte Unterschied zu PHP ist, dass du in den MySQL Connector installieren und in der Systemsteuerung unter Datenquellen / ODBC einen Eintrag für die ODBC Verbindung eintragen musst.
In der ODBC Verwaltung müsste eine Verbindung "meine-db" zur Datenbank eingetragen werden.
Das Eintragen einer ODBC Verbindung funktioniert so:
http://all-inkl.com/wichtig/anleitungen ... 7_288.html
... zudem verstehe ich das #PB_Any immer noch nicht.
In PureBasic erfolgt der Zugriff auf Elemente, Gadgets, etc über eine interne ID - eine Zahl. Diese kann entweder als Konstante festgelegt werden oder aber über #PB_Any dynamisch von der jeweiligen Funktion erzeugt und in die Variable "db" geschrieben werden.

Wofür braucht man diese ID? Es könnte ja z.B. sein, dass du auf zwei Datenbanken gleichzeitig zugreifen möchtest, dann musst du zwei OpenDatabase() ausführen und hast dann zwei IDs für die nachfolgenden Database Funktionen.
Michael Hack

Michael Hack Software :: Softwareentwicklung | Webentwicklung | IT-Dienstleistungen
www.michaelhacksoftware.de :: www.mh-s.de :: www.michael-hack.de
Liss
Beiträge: 9
Registriert: 27.06.2016 14:06

Re: Windows / mySQL Server Daten auslesen und schreiben

Beitrag von Liss »

mhs hat geschrieben:
Der größte Unterschied zu PHP ist, dass du in den MySQL Connector installieren und in der Systemsteuerung unter Datenquellen / ODBC einen Eintrag für die ODBC Verbindung eintragen musst.
In der ODBC Verwaltung müsste eine Verbindung "meine-db" zur Datenbank eingetragen werden.
Das Eintragen einer ODBC Verbindung funktioniert so:
http://all-inkl.com/wichtig/anleitungen ... 7_288.html
... zudem verstehe ich das #PB_Any immer noch nicht.
In PureBasic erfolgt der Zugriff auf Elemente, Gadgets, etc über eine interne ID - eine Zahl. Diese kann entweder als Konstante festgelegt werden oder aber über #PB_Any dynamisch von der jeweiligen Funktion erzeugt und in die Variable "db" geschrieben werden.

Wofür braucht man diese ID? Es könnte ja z.B. sein, dass du auf zwei Datenbanken gleichzeitig zugreifen möchtest, dann musst du zwei OpenDatabase() ausführen und hast dann zwei IDs für die nachfolgenden Database Funktionen.

Danke
OpenDatabase(#PB_Any, .... habe ich verstanden da unsere Datenbank ja einen Verweis auf eine ander hat war das hilfreich.

DatenbankName$ habe ich ermittelt.
unter ODBC-Datenquellen-Administrator steht der Name "db-connection"
Obwohl mir nicht klar ist, warum in PHP das so $pdo = new PDO('mysql:host=server1;dbname=db1', ' ', ' '); aussieht und auch Funktioniert.
Wie auch immer habe jetzt "db1-connection" eingefügt und es kommt kein Fehler.

Leider bringt mit Ihr Programm einen "Fehler bei Selct" obwohl die Verbindung steht.

Code: Alles auswählen

Define.i db, Id
Define.s Query, NT, alloc

UseODBCDatabase()

; === Datenbank öffnen
db = OpenDatabase(#PB_Any, "db1-connection", " ", " ", #PB_Database_ODBC)

If Not db
  Debug "Keine Verbindung zur Datenbank"
  End
EndIf

; === Select der Einträge
Query = "SELECT Id, NT, alloc FROM tb211_stock_positions"

 If Not DatabaseQuery(db, Query)
  Debug "Fehler bei Select"
 EndIf

While NextDatabaseRow(db)

  Id    = GetDatabaseLong  (db, 0)
  NT  = GetDatabaseString(db, 1)
  alloc = GetDatabaseString(db, 2)

  Debug "Eintrag " + Str(Id) + ": " + NT + " - " + alloc
 
Wend

FinishDatabaseQuery(db)

; === Datenbank schliessen
CloseDatabase(db)
__________________________________________________
Code-Tags hinzugefügt
04.07.2016
RSBasic
Benutzeravatar
mhs
Beiträge: 224
Registriert: 11.01.2009 16:30
Wohnort: Graben
Kontaktdaten:

Re: Windows / mySQL Server Daten auslesen und schreiben

Beitrag von mhs »

PHP baut die Verbindung nicht per ODBC auf, sondern direkt und benötigt deswegen keinen ODBC Eintrag. Mit PureBasic wäre das über die MySQL Lib/DLL auch möglich, ist aber etwas komplizierter und sind dann keine nativen PB Funktionen mehr.

Mittels DatabaseError() kann nach einem Fehler die Fehlerbeschreibung ermittelt werden.
Michael Hack

Michael Hack Software :: Softwareentwicklung | Webentwicklung | IT-Dienstleistungen
www.michaelhacksoftware.de :: www.mh-s.de :: www.michael-hack.de
Antworten