Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

mysql_test.bas
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 25.02.2009, 22:46    Titel: mysql_test.bas Antworten mit Zitat

Hi!

Habe grade meine ersten gehversuche mit mysql hinter mir... irgendwie stolper ich da über stock und stein...

Erst hab ich mir die neueste version von mysql (5.1.31-community) installiert, eine datenbank ("p20") per mysql-commandline erstellt, dann ein paar tabellen, und in einer Tabelle sogar per "insert" daten eingetragen.

soweit kein problem.

Das ganze wollte ich jetzt mit einem programm in freebasic-programmiert, abfragen und evtl. auch mal was reinschreiben. letzteres ist aber 2. rangig.

dann hab ich mir die mysql_test.bas angeschaut.
Klappt natürlich vorne und hinten nicht weil man zuerst die parameter der funktion ... mysql_real_connect( ... an seine bedürfnisse anpassen muss.
Also auch das getan, localhost, root zugriff und passwort für root als parameter übergeben. Der Port stimmt.

Und tatsächlich, er gibt mir was aus... aber was soll das sein??

da steht was von table # ... und Fld# ... ah ok, er listet mir meine tabellen auf.. aber der quelltext scheint mehr hergeben zu wollen...
Da steht was von row und fields ... sollte das programm etwa auch den inhalt meiner tabellen ausgeben? scheint aber irgendwie nicht zu klappen.

Client info: 5.1.31
Host info: localhost via TCP/IP
Server info: 5.1.31-community
Table # 1 :-
Fld # 1(Tables_in_p20): kunden
==============================
Table # 2 :-
Fld # 1(Tables_in_p20): meldezeiten
==============================
Table # 3 :-
Fld # 1(Tables_in_p20): techniker
==============================


was heisst "Tables_in_p20" ? und was meint der mit Fld#1 ? .. ich habe in der tabelle techniker einige vollständige einträge. alle tabellen haben vernünftige definitionen.. also z.B. beim techniker:
name varchar(100), technummer integer, passwort varchar(10)

dementsprechend korrekt sieht auch der inhalt aus, den ich mir in der kommandozeile per "select * from techniker;" anzeigen lassen kann.


gibt es irgendwo ein besseres tutorial, welches für datenbank-einsteiger wie mich etwas hilfreicher ist, als dieses ungenügend dokumentierte mysql_test.bas ?
(BITTE IN >FREEBASIC<, NICHT C/C++ oder PHP)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 26.02.2009, 09:43    Titel: Antworten mit Zitat

Help... i need somebody... help! Just anybody! .. heeellp...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 26.02.2009, 18:57    Titel: Antworten mit Zitat

keiner eine idee?
kein fachkundiger anwesend? *seufzt*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 26.02.2009, 19:05    Titel: Antworten mit Zitat

ich würde mal rein intuitiv sagen, das 'Fld' für 'Field' also .. Feld steht, die #1 die nummer des feldes angibt, und "Tables_in_p20" sagt, das Fld sich auf die Tabellen in p20 bezieht. Aber dies nur als information mit angegeben wird, da e sin () steht.


Das würde dann übersetzt soviel wie:

Table # 1 :-
Fld # 1(Tables_in_p20): kunden


Tabelle nr. 1: keine bezeichnung
Feld Nr. 1 in den tabellen von p20: bezeichnung des felds ist kunden

usw.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 26.02.2009, 19:26    Titel: Antworten mit Zitat

Hallo,

ich habe schon mehrere kleinere Datenbankanwendungen mit der Kombination MySQL+FreeBASIC programmiert, d.h. es geht. lächeln Das Einzige, was ich dabei ein bisschen vermisst habe, sind die schön handlichen assoziativen Arrays aus php, die man mit mysq_fetch_assoc() holen kann. verwundert Die Funktionen, die bei der Nutzung von MySQL aus FB heraus zu verwenden sind, sind als C-API dokumentiert. Auch die Bedeutung von mysql_fetch_field(...) wird dort erklärt.

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 26.02.2009, 21:28    Titel: Antworten mit Zitat

MySQL-Seitig sieht es bei mir so aus:

Enter password: *****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.31-community MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use p20
Database changed
mysql> show tables;
+---------------+
| Tables_in_p20 |
+---------------+
| kunden |
| meldezeiten |
| techniker |
+---------------+
3 rows in set (0.06 sec)

mysql> describe techniker;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| name | varchar(100) | YES | | NULL | |
| tnum | int(11) | YES | | NULL | |
| pwd | varchar(10) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.03 sec)

mysql>


Da sieht man das ich 3 Tabellen angelegt habe und die beschreibung für die tabelle "techniker". In dieser Tabelle habe ich sogar werte reingeschrieben. Aber mysql_test.bas zeigt mir nichts davon an. Wäre ja schon mal was wert, wenn es mir die felder der tabelle "techniker" ausgeben könnte.. also einerseits die beschreibung, andererseits den inhalt.
Auf anhieb wüsst ich nichtmal wie ich da rankomme... vielleicht kann mir jemand ein paar übersichtliche zeilen dazu schreiben (in FB)... leider liegt dem FBC sonst ja kein quelltext zu mysql bei, so das ich mal mehr sehen könnte.

Ich hab mir schon befehlsreferenzen in C und PHP angeschaut, aber damit komm ich nich wirklich weiter traurig.. entweder ich versteh die materie noch nicht gut genug, oder bei mir funktioniert etwas nicht wie es soll.


Oder vielleicht mal anders gefragt: Was genau, SOLL mysql_test.bas denn machen? Soll es die tabellen der datenbank ausgeben und nicht mehr?
Irgendwie ärger ich mich über dieses Programm, ich kann nichtmal erkennen, was es auf jeden fall ausgeben sollte.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 27.02.2009, 14:32    Titel: Antworten mit Zitat

*seufzt* .. mysql schein kein beliebtes thema zu sein traurig .. dabei brauch ich echt dringend hilfe *verzweifeltbin*...

ich wär euch echt super dankbar wenn ihr mir ein paar zeilen coden könntet, wie man daten aus einer tabelle rauslesen und reinschreiben kann... *bettelt*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 27.02.2009, 20:38    Titel: Antworten mit Zitat

OneCypher hat Folgendes geschrieben:
*seufzt* .. mysql schein kein beliebtes thema zu sein traurig ..

Naja, man benötigt auch nicht alle Tage ne Datenbank in FreeBASIC.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 27.02.2009, 20:53    Titel: Antworten mit Zitat

Ein völlig alternativer Weg (Windows), um auf eine Datenbank zu kommen, ursprünglich für QB geschrieben, aber 1:1 für FreeBasic portierbar:

http://beilagen.dreael.ch/QB/MYSQL.BAS

Verwendet die ADO-Schnittstelle über ActiveX. Hat als Vorteil, auf beliebige Datenbanken zugreifen zu können, nur ODBC-Treiber nötig.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 27.02.2009, 21:12    Titel: Antworten mit Zitat

VBScript nützt mir leider auch nichts... soll eigentlich unter linux laufen.. und da gibts kein activex ... (aus guten gründen happy)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 27.02.2009, 22:02    Titel: Antworten mit Zitat

Und was ist das für eine seltsame bibliothek ?

In den MySQL-Referenzen steht fast überall, das man mysql_query benutzen soll um sich einen abfrage anzuschauen.
In PHP würde das so ausschauen:

Code:

<?php
$result = mysql_query('SELECT * WHERE 1=1');
.
.
.


die funktion mysql_query soll also einen "result" zurückgeben. "result" wird oft als "Ergebnis-Kennung" beschrieben. Die entspricht, soweit ich das sehe, in der mysql.bi dem datentyp mysql_res

Nur in mysql.bi ist mysql_query so deklariert:

Code:

declare function mysql_query alias "mysql_query" (byval mysql as MYSQL ptr, byval q as zstring ptr) as integer


D.h. die funktion mysq_query kann gar keine Ergebnis-Kennung zurückgeben, sonst wäre sie als mysql_res ptr deklariert!

Ich hatte zu erst vor mir eine tabelle mit dieser anweisung als ergebnis ausgeben zu lassen:
Code:

dim res as MYSQL_RES ptr
.
.
res = mysql_query(db,"select * from techniker")
.
.


Aber das ist natürlich mumpitz weil da nur eine 0 (false) oder eine 1 (true) zurückgegeben wird.

Wie komme ich denn dann effektiv an einen tabelleninhalt?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 27.02.2009, 22:26    Titel: Antworten mit Zitat

Ich glaube du musst dafür mysql_real_query(...) nutzen zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 28.02.2009, 10:53    Titel: Antworten mit Zitat

mysql_real_query ist auch als integer deklariert. auch hier komm ich nicht an die ergebniskennung ran traurig
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 28.02.2009, 12:31    Titel: Antworten mit Zitat

Nur überflogen, keine Ahnung von MySQL in FB, aber versuchen, den Integer mal als Pointer auf die Struct zu interpretieren?
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 28.02.2009, 16:29    Titel: Antworten mit Zitat

Hallo,

ich habe dir mal ein kleines Beispiel zusammengestellt. Ich hatte nicht viel Zeit, sodass es nicht besonders hilfreich kommentiert ist, aber es dürfte nachvollziehbar sein: http://www.freebasic-portal.de/index.php?s=fbporticula&mode=show&id=817

Die Tabelle testtab, die im Beispiel benutzt wird, muss den folgenden Aufbau haben, damit das Programm ohne Veränderungen lauffähig ist:



Hier noch zwei Screenshots:



Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4701
Wohnort: ~/

BeitragVerfasst am: 28.02.2009, 16:52    Titel: Antworten mit Zitat

Ich wurde vor ein paar Wochen gefragt, ob man MySQL überhaupt mit FreeBASIC nutzen kann, weil es dazu noch kein Code-Beispiel im Portal gibt. Taugt dieser Code als erstes Beispiel? Dann könntest du ihn vielleicht da auch noch reinstellen. lächeln
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 28.02.2009, 20:52    Titel: Antworten mit Zitat

JAAAA!! lächeln lächeln lächeln lächeln lächeln

@Sebastian: GENAU DAS HAB ICH GESUCHT!!

Wenn du dort noch den aufbau der test-tabelle ("testtab") im quelltext beschreibst und die spalte "alter" anders benennst, dann klappt dein tutorial absolut einwandfrei lächeln

mit "alter" meine ich, wenn ich versuche die tabelle wie folgt anzulegen:
Code:

mysql> create table testtab(ID integer, username varchar(100),Alter  integer, zeit date);


gibt mir mysql auf der commandozeile folgende meldung:

Code:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Alter integer, zeit date)' at line 1


sobald ich die spalte anders benenne, z.B. Alter1:

Code:

mysql> create table testtab(id integer, username varchar(100),alter1 integer, zeit date);

dann klappts:
Code:

Query OK, 0 rows affected (0.01 sec)


entsprechend, den funktionsaufruf in der funktion MySQLInsert abgeändert, läufts wie am schnürchen lächeln

VIELEN VIELEN VIELEN DANK!!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 28.02.2009, 21:08    Titel: Antworten mit Zitat

ALTER ist auch ein mysql-schlüsselwort. sofern es nicht als schlüsselwort gemeint ist, muss es in `akzente` gefasst werden.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 28.02.2009, 21:54    Titel: Antworten mit Zitat

ah ok.. das war im mysql-manual nicht beschrieben, dass man die spaltenbeschreibungen auch in akzente setzen kann..
ich muss mir halt alle kleinen infos zusammensuchen happy .. um so dankbarer bin ich euch!

@Sebastian: Wo findet man diesen MySQL-Tabelleneditor ?
hab mir mal diesen MySQL-Workbench 5 OSS runtergeladen, aber da versteh ich nur noch bahnhof...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 28.02.2009, 22:36    Titel: Antworten mit Zitat

ich bin mir ziemlich sicher, dass das dort beschrieben wird peinlich
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz