Χρήση MySQL - εισαγωγή και ανάγνωση δεδομένων

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
xarisss
Δημοσιεύσεις: 693
Εγγραφή: 06 Σεπ 2002 18:02
Τοποθεσία: Volos
Επικοινωνία:

Χρήση MySQL - εισαγωγή και ανάγνωση δεδομένων

Δημοσίευση από xarisss » 19 Φεβ 2009 10:20

Καλημέρα,

Θα χρειαστώ μια βάση δεδομένων για μια εφαρμογή, οπότε αποφάσισα να χρησιμοποιήσω MySQL, η οποία συνεργάζεται μια χαρά με τη java απ' ότι ξέρω.
Από MySQL είμαι εντελώς άσχετος όμως, οπότε θα ήθελα να με κατατοπίσετε σε μερικά θέματα. Καταρχήν, κατέβασα το πακέτο του xampp, που έχει μέσα mysql server. Κάνω start το server, αλλά δε βλέπω από πού θα αρχίσω να γράφω κάτι σχετικό με τη βάση.
Προφανώς πρέπει να εγκαταστήσω και κάτι άλλο, ε;

Τώρα, ο μόνος τρόπος για να φτιάξεις τη βάση είναι με κώδικα; Θέλω να πω, η mySQL έχει γραφικό περιβάλλον για να μπορώ να δω τις τιμές που αποθηκεύτηκαν, κλπ;

Ίσως σε πολλούς να φανούν χαζές οι απορίες μου, αλλά είναι οι απορίες κάποιου που δεν έχει πιάσει καθόλου mySQL. :D

Αν μπορεί ας βοηθήσει κανείς...
Τελευταία επεξεργασία από το μέλος xarisss την 25 Φεβ 2009 00:30, έχει επεξεργασθεί 2 φορές συνολικά.
PRO-PRO.gr
Πρωτάθλημα Προγνωστικών

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Χρήση MySQL - εισαγωγή και ανάγνωση δεδομένων

Δημοσίευση από ThyClub » 19 Φεβ 2009 10:27

Αν έκανες εγκατάσταση το Xampp τότε εδώ http://localhost/phpmyadmin θα βρείς ενα εργαλείο για να κάνεις την δουλειά σου.

Άβαταρ μέλους
xarisss
Δημοσιεύσεις: 693
Εγγραφή: 06 Σεπ 2002 18:02
Τοποθεσία: Volos
Επικοινωνία:

Χρήση MySQL - εισαγωγή και ανάγνωση δεδομένων

Δημοσίευση από xarisss » 19 Φεβ 2009 10:32

Ευχαριστώ Thy.
Η δ/νση που μου έδωσες ανοίγει μόνο μέσα από το σύστημα που πέρασα το xampp, έτσι;
Τι εργαλείο είναι αυτό;
PRO-PRO.gr
Πρωτάθλημα Προγνωστικών

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Χρήση MySQL - εισαγωγή και ανάγνωση δεδομένων

Δημοσίευση από ThyClub » 19 Φεβ 2009 11:07


Άβαταρ μέλους
xarisss
Δημοσιεύσεις: 693
Εγγραφή: 06 Σεπ 2002 18:02
Τοποθεσία: Volos
Επικοινωνία:

Χρήση MySQL - εισαγωγή και ανάγνωση δεδομένων

Δημοσίευση από xarisss » 19 Φεβ 2009 11:21

Δηλαδή για να καταλάβω, ξεκινάω τον MySQL server και από το phpmyadmin φτιάχνω ή ελέγχω τη βάση δεδομένων;
Συνεργάζεται με το xampp το phpmyadmin;
PRO-PRO.gr
Πρωτάθλημα Προγνωστικών

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Χρήση MySQL - εισαγωγή και ανάγνωση δεδομένων

Δημοσίευση από ThyClub » 19 Φεβ 2009 18:33

xarisss έγραψε:Δηλαδή για να καταλάβω, ξεκινάω τον MySQL server και από το phpmyadmin φτιάχνω ή ελέγχω τη βάση δεδομένων;
Ακριβώς.
Συνεργάζεται με το xampp το phpmyadmin;
Το phpmyadmin είναι πρόγραμμα διαχείρισης βάσης δεδομένων. Το xampp είναι ενα εργαλείο που εγκαθιστά και ρυθμίζει διάφορους σέρβερς όπως Apache, MySQL, Filezilla κτλ.

Άβαταρ μέλους
xarisss
Δημοσιεύσεις: 693
Εγγραφή: 06 Σεπ 2002 18:02
Τοποθεσία: Volos
Επικοινωνία:

Χρήση MySQL - εισαγωγή και ανάγνωση δεδομένων

Δημοσίευση από xarisss » 22 Φεβ 2009 14:44

Καταρχήν ευχαριστώ για τη βοήθεια.
Λοιπόν, έφτιαξα τη βάση. Έχω κάποιες μεταβλητές, τις οποίες θα βάλω μέσα με τον ακόλουθο κώδικα (σε java):
String insertStr =
"INSERT INTO `"+dbName+"`.`"+tableName+"` VALUES (CURRENT_TIMESTAMP , '"+
m.get_data1() + "', '" +
m.get_data2()+"', '"+
m.get_data3()+"');";

Αυτό που θέλω είναι να μπορώ σε στιγμές που θα ορίζω εγώ να μπορώ να διαβάσω συγκεκριμένα σημεία της βάσης. (π.χ. το data3 τη στιγμή που αλλάζει το data1). Αυτές τις εντολές για java πού θα τις βρω;
PRO-PRO.gr
Πρωτάθλημα Προγνωστικών

Άβαταρ μέλους
xarisss
Δημοσιεύσεις: 693
Εγγραφή: 06 Σεπ 2002 18:02
Τοποθεσία: Volos
Επικοινωνία:

Χρήση MySQL - εισαγωγή και ανάγνωση δεδομένων

Δημοσίευση από xarisss » 25 Φεβ 2009 01:27

Τη βάση την έφτιαξα με το phpmyadmin.
Υποθέτω ότι με αυτό τον κώδικα θα βάζω μέσα στα πεδία της βάσης τιμές, οι οποίες έρχονται με τις συναρτήσεις get_data*(). Αυτό που δεν έχω δοκιμάσει είναι αν κάθε καινούρια καταχώρηση πάει και τη γράφει σε καινούρια γραμμή. Έχω κολλήσει κάπου στη java, αλλά αυτό θα το ξεπεράσω σύντομα πιστεύω.
Ας υποθέσουμε λοιπόν ότι γράφω κάθε καταχώρηση σε καινούρια γραμμή. Καθάρισμα της βάσης θα κάνω χειροκίνητα λογικά, σε περίπτωση που μαζέψει τότα πολλά δεδομένα.

Το θέμα είναι τώρα ότι κατά τακτά χρονικά διαστήματα (π.χ. κάθε 1 sec) θέλω να διαβάζω από μία γραμμή της βάσης. Θέλω να παίρνω όλα τα data
current_timestamp, data1, data2 και data3 και να τα γράφω σε 4 δικές μου μεταβλητές.
Θα προτιμούσα, βέβαια να τραβάω μαζί τα δεδομένα τεσσάρων γραμμών, ως εξής:
Ας πούμε ότι το data1 παίρνει τιμές 1,2,3,4. Θέλω να τραβήξω από τη βάση τις εξής 4 γραμμές:
ι. Την τελευταία γραμμή στην οποία το data1=1
ιι. Την τελευταία γραμμή στην οποία το data1=2
ιιι. Την τελευταία γραμμή στην οποία το data1=3
ιν. Την τελευταία γραμμή στην οποία το data1=4

Ας πούμε, απ' ότι είδα και στο πολύ καλό tutorial που ξεκίνησε ο mrpc, για να τραβήξω στοιχεία από τη βάση θα χρησιμοποιήσω την εντολή SELECT. (μιλάω για να τραβήξω απλώς στοιχεία, για το πώς θα γίνει το παραπάνω που ανέφερα μάλλον θα χρειαστώ τη βοήθειά σας).
SELECT ονομα πεδίου, ονομα πεδίου FROM `όνομα πίνακα`

Δηλαδή,

String selectStr=
SELECT data1, data2, data3 FROM 'dbName'
(το πώς εκφράζεται ακριβώς στη java θα το βρω)

Τώρα, το θέμα είναι αυτά που παίρνω πώς τα κάνω assign σε τιμές; Ας πούμε ότι έχω τις μεταβλητές d1, d2, d3. Πώς θα τους περάσω τα δεδομένα των data1, 2, 3 της βάσης;

Ελπίζω να μη σας κούρασε το ποστ μου, ευχαριστώ εκ των προτέρων και μόνο που το διαβάσατε παιδιά. Αν μπορεί κάποιος να βοηθήσει, εδώ είμαστε.
PRO-PRO.gr
Πρωτάθλημα Προγνωστικών

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Χρήση MySQL - εισαγωγή και ανάγνωση δεδομένων

Δημοσίευση από cherouvim » 25 Φεβ 2009 08:49

Μάθε να τα κάνεις αυτά πρώτα στη κονσόλα ή στο phpMyAdmin και μετά εκτέλεσε τα μέσα από Java.

Στη Java μην χρησιμοποιείς το Statement με String concatenation, αλλά το PreparedStatement με indexed parameters γιατί υπάρχει κίνδυνος SQL injection.

Άβαταρ μέλους
xarisss
Δημοσιεύσεις: 693
Εγγραφή: 06 Σεπ 2002 18:02
Τοποθεσία: Volos
Επικοινωνία:

Χρήση MySQL - εισαγωγή και ανάγνωση δεδομένων

Δημοσίευση από xarisss » 25 Φεβ 2009 15:34

Αυτό ρωτάω. Πώς γίνεται αυτό;
Το κακό είναι ότι και από java και από mySQL είμαι πολύ πίσω. Υπάρχει τρόπος να διαβάσω κάτι για να κάνω σχετικά γρήγορα αυτό που ζητάω;
PRO-PRO.gr
Πρωτάθλημα Προγνωστικών

Άβαταρ μέλους
xarisss
Δημοσιεύσεις: 693
Εγγραφή: 06 Σεπ 2002 18:02
Τοποθεσία: Volos
Επικοινωνία:

Χρήση MySQL - εισαγωγή και ανάγνωση δεδομένων

Δημοσίευση από xarisss » 25 Φεβ 2009 23:20

Καμία πρόταση;
Δε θέλω μασημένη τροφή, και μια πρόταση για να διαβάσω κάτι σχετικό θα βοηθούσε.
PRO-PRO.gr
Πρωτάθλημα Προγνωστικών

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

Χρήση MySQL - εισαγωγή και ανάγνωση δεδομένων

Δημοσίευση από mrpc » 28 Φεβ 2009 15:07

Μάλλον θα πρέπει να κατεβάσεις το manual της MySQL. Γενικά εκεί θα λύσεις όλες σου τις απορίες.
http://dev.mysql.com/doc/
Πάντως για να φιλτράρεις όπως λες τα αποτελέσματα της select, υπάρχουν 3 βασικά πράγματα.
Το where:

Κώδικας: Επιλογή όλων

select * from 'table' where `data1` = '1'
Τραβάς όλα τα αποτελέσματα με κριτήριο το data1 να έχει την τιμή 1. Μπορείς να κάνεις και πιο πολύπλοκα πράγματα με and ή or:

Κώδικας: Επιλογή όλων

select * from `table` where `data1` = '1' OR `data1` = 2
Μετά υπάρχει η LIMIT που μπαίνει μετά, και ορίζει πόσα αποτελέσματα θέλεις να πάρεις. Αν θες π.χ. μόνο τα 5 πρώτα, βάζεις:

Κώδικας: Επιλογή όλων

select * from `table` where `data1` = '1' LIMIT 5
Τέλος, υπάρχει και η ORDER BY, που ορίζει με ποια σειρά σου έρχονται τα αποτελέσματα. Έτσι, αν θές να σου έρθουν π.χ. χρονολογικά, υποθέτοντας ότι έχεις κάποιο timestamp πεδίο (ή date π.χ.), βάζεις:

Κώδικας: Επιλογή όλων

select * from `table` where `data1` = '1' ORDER BY `time` ASC
Στο τέλος έχω βάλει ASC, υπάρχει και το DESC. Είναι με ποια σειρά διαβάζουμε τον πίνακα (από την αρχή προς το τέλος ή ανάποδα).
Με ένα συνδιασμό των παραπάνω, μπορείς να τραβήξεις σχεδόν ότι θες από κάποιον πίνακα.

Άβαταρ μέλους
xarisss
Δημοσιεύσεις: 693
Εγγραφή: 06 Σεπ 2002 18:02
Τοποθεσία: Volos
Επικοινωνία:

Χρήση MySQL - εισαγωγή και ανάγνωση δεδομένων

Δημοσίευση από xarisss » 28 Φεβ 2009 16:12

Ευχαριστώ mrpc, θα δω το manual, θα δοκιμάσω και τις εντολές και θα επανέλθω...
PRO-PRO.gr
Πρωτάθλημα Προγνωστικών

Άβαταρ μέλους
xarisss
Δημοσιεύσεις: 693
Εγγραφή: 06 Σεπ 2002 18:02
Τοποθεσία: Volos
Επικοινωνία:

Χρήση MySQL - εισαγωγή και ανάγνωση δεδομένων

Δημοσίευση από xarisss » 05 Μαρ 2009 01:19

Κώδικας: Επιλογή όλων

String selectStr =
	"SELECT 'data1' FROM `"+dbName+"`.`"+tableName+"` WHERE '"data2"'=x1 AND '"data3"'=x2 ORDER BY '"timestamp"' DESC LIMIT 1;
Η εντολή που θέλω πρέπει να είναι αυτή, έτσι; Θα δω τώρα πώς θα την προσαρμόσω στη java, ώστε να κάνει assign αυτά που τραβάει σε μεταβλητές.
Να ρωτήσω και κάτι άλλο, υπάρχει τρόπος η SQL (ή η java) να μου μετατρέπει το timestamp σε μιλισέκοντ (ms);
PRO-PRO.gr
Πρωτάθλημα Προγνωστικών

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Χρήση MySQL - εισαγωγή και ανάγνωση δεδομένων

Δημοσίευση από cherouvim » 05 Μαρ 2009 08:47

xarisss έγραψε:...(ή η java) να μου μετατρέπει το timestamp σε μιλισέκοντ (ms);
timestamp.getTime()
http://java.sun.com/j2se/1.4.2/docs/api ... stamp.html

Απάντηση

Επιστροφή στο “MySQL”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες