Με αυτό το σεμινάριο παρουσιάζω στην κοινότητα πώς να αποκτήσετε πρόσβαση σε μια βάση δεδομένων MySQL από τη γλώσσα προγραμματισμού C και χωρίς να χρησιμοποιήσετε πάρα πολλές εξαρτήσεις, με
libmysqlclient
Ελπίζω ότι θα είναι χρήσιμο σε όσους χρειάζονταν αυτόν τον τύπο τεκμηρίωσης και συνεπώς θα συνεχίσουν να συνεισφέρουν στην κοινότητα SL και να βοηθούν όσους δεν διαθέτουν INTERNET.
διαμόρφωση
Πρώτα πρέπει να ελέγξουμε ότι έχουμε εγκαταστήσει τις βιβλιοθήκες σχεδιασμού *-dev
για να έχετε πρόσβαση από C / C ++ στη MySQL.
mysql_config --libs
Θα πρέπει να φαίνεται κάπως έτσι:
-Wl, -Bsymbolic-functions –L / usr / lib / mysql -lmysqlclient rdynamic
Σε περίπτωση που ελέγξετε ότι η βιβλιοθήκη δεν είναι εγκατεστημένη, την εγκαθιστούμε με την ακόλουθη εντολή:
sudo apt-get install libmysqlclient-dev mysql_config --cflags -I / usr / include / mysql -DBIG_JOINS = 1 -fno-ketat-aliasing -DUNIV_LINUX -DUNIV_LINUX
Αφού επαληθεύσουμε και εγκαταστήσουμε αυτό που χρειαζόμαστε για τη σύνδεση μεταξύ MySQL και C, προχωράμε στη δημιουργία της βάσης δεδομένων:
ΔΗΜΙΟΥΡΓΙΑ ΔΕΔΟΜΕΝΩΝ δοκιμή. Δοκιμή ΧΡΗΣΗΣ; ΔΗΜΙΟΥΡΓΙΑ δεδομένων ΠΙΝΑΚΑΣ (id int AUTO_INCREMENT NOT NULL PRIMARY KEY, name varchar (40), age int); INSERT INTO data VALUES (NULL, "Alma Hernandez", 28), (NULL, "Jose Sanchez", 39), (NULL, "Martin loera", 25), (NULL, "Leonardo Cortez", 26), (NULL , "Gustavo Romero", 25);
Προγραμματισμός και συλλογή
Συνεχίζουμε να δημιουργούμε τον κωδικό:
Ερώτημα. Γ
/ * βιβλιοθήκες για χρήση * / #include / * βιβλιοθήκη που μας επιτρέπει να κάνουμε χρήση συνδέσεων και ερωτημάτων με το MySQL * / #include / * Για να χρησιμοποιήσετε το printf, κ.λπ. * / int main () {MYSQL * conn; / * μεταβλητή σύνδεσης για MySQL * / MYSQL_RES * res; / * μεταβλητή που θα περιέχει το αποτέλεσμα της σειράς ερωτήματος * / MYSQL_ROW. / * μεταβλητή που θα περιέχει τα πεδία για κάθε εγγραφή που έχει συμβουλευτεί * / char * server = "localhost"; / * διεύθυνση διακομιστή 127.0.0.1, localhost ή διεύθυνση IP * / char * user = "root"; / * χρήστης για να ρωτήσετε τη βάση δεδομένων * / char * password = "root"; / * κωδικός πρόσβασης για τον εν λόγω χρήστη * / char * database = "test"; / * όνομα της βάσης δεδομένων για ερώτημα * / conn = mysql_init (NULL); / * προετοιμασία για να ακυρώσετε τη σύνδεση * / / * σύνδεση στη βάση δεδομένων * / εάν (! mysql_real_connect (conn, server, user, password, database, 0, NULL, 0)) {/ * ορίστε τις παραμέτρους σύνδεσης προηγουμένως ορίστηκε * / fprintf (stderr, "% s \ n", mysql_error (conn)); / * εάν υπάρχει σφάλμα καθορίστε ποιο σφάλμα ήταν * / έξοδος (1). } / * αποστολή ερωτήματος SQL * / if (mysql_query (conn, "select * from data")) {/ * ορισμός του ερωτήματος και την προέλευση της σύνδεσης * / fprintf (stderr, "% s \ n", mysql_error ( Συν) έξοδος (1) · } res = mysql_use_result (conn); Printf("ID \ tName \ t \ age \ n"); ενώ ((σειρά = mysql_fetch_row (res))! = NULL) / * μέσω της μεταβλητής res με όλες τις εγγραφές που έχουν ληφθεί για χρήση * / Printf("% s \ t% s \ t% s \ n", σειρά [0], σειρά [1], σειρά [2]); / * η μεταβλητή σειρά γίνεται πίνακας για τον αριθμό των πεδίων στον πίνακα * / / * η μεταβλητή res απελευθερώνεται και η σύνδεση είναι κλειστή * / mysql_free_result (res); mysql_close (σύνδεση); }
Συλλέγουμε με:
gcc -o Query $ (mysql_config --cflags) Query.c $ (mysql_config -–libs)
Επαλήθευση
Εκτελούμε:
./Ερώτηση
πηγή: Ιστολόγιο του Hugo4295
Καλό αυτό, αποθηκευμένο στο οπλοστάσιο σεναρίων και σεμιναρίων στην κονσόλα! +1 για τον συνεργάτη σας ...
Γεια σας, πολλά συγχαρητήρια για ό, τι υπάρχει στον ιστό σχετικά με αυτό το ζήτημα, η δική σας ήταν η πλησιέστερη λύση. λίγο αμφιβολία, γιατί δεν παίρνω το εκτελέσιμο ;;
κατά τη στιγμή της comílar δεν σημειώνει κανένα σφάλμα αλλά δεν δημιουργεί το ./ser4
Έχετε ιδέα πώς να το κάνετε στο Fedora;
Δεν διαφωνώ με την κοινοποίηση των πληροφοριών, αλλά εάν δεν παραχωρούνται τα πνευματικά δικαιώματα, καθώς αυτό το παράδειγμα έγινε από εμένα από το 2011 και εδώ είναι η διεύθυνση της αρχικής πηγής
http://hugo4295.blogspot.mx/search?q=MYSQL
Κανένα πρόβλημα Βίκτορ, αλλά αν παρατηρήσετε ότι δεν έχω πάρει το άρθρο από τον ιστότοπό σας, αλλά από άλλο όπου δυστυχώς δεν έβαλαν την πηγή. Ωστόσο, τώρα επεξεργάζομαι το άρθρο .. 😉
εξαιρετική ανταλλαγή γνώσεων μεγάλη ελευθερία
Και πώς μπορούν να γίνουν εισαγωγές ???