Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 25.02.2009, 22:46 Titel: mysql_test.bas |
|
|
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 |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 26.02.2009, 09:43 Titel: |
|
|
Help... i need somebody... help! Just anybody! .. heeellp... |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 26.02.2009, 18:57 Titel: |
|
|
keiner eine idee?
kein fachkundiger anwesend? *seufzt* |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 26.02.2009, 19:05 Titel: |
|
|
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 |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 26.02.2009, 21:28 Titel: |
|
|
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 .. 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 |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 27.02.2009, 14:32 Titel: |
|
|
*seufzt* .. mysql schein kein beliebtes thema zu sein .. 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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 27.02.2009, 20:38 Titel: |
|
|
OneCypher hat Folgendes geschrieben: | *seufzt* .. mysql schein kein beliebtes thema zu sein .. |
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 |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 27.02.2009, 20:53 Titel: |
|
|
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 |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 27.02.2009, 21:12 Titel: |
|
|
VBScript nützt mir leider auch nichts... soll eigentlich unter linux laufen.. und da gibts kein activex ... (aus guten gründen ) |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 27.02.2009, 22:02 Titel: |
|
|
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 |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 27.02.2009, 22:26 Titel: |
|
|
Ich glaube du musst dafür mysql_real_query(...) nutzen  |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 28.02.2009, 10:53 Titel: |
|
|
mysql_real_query ist auch als integer deklariert. auch hier komm ich nicht an die ergebniskennung ran  |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 28.02.2009, 12:31 Titel: |
|
|
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 |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4700 Wohnort: ~/
|
Verfasst am: 28.02.2009, 16:52 Titel: |
|
|
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.  _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 28.02.2009, 20:52 Titel: |
|
|
JAAAA!!
@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
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
VIELEN VIELEN VIELEN DANK!!!! |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 28.02.2009, 21:08 Titel: |
|
|
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 |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 28.02.2009, 21:54 Titel: |
|
|
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 .. 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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 28.02.2009, 22:36 Titel: |
|
|
ich bin mir ziemlich sicher, dass das dort beschrieben wird  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
|