Προς το περιεχόμενο

MySQL Connector /C++


Προτεινόμενες αναρτήσεις

Δημοσ.

Mπορεί κάποιος ουσιαστικά να με βοηθήσει ώστε να μπορέσει να γίνει σύνδεση MySQL με C++

Ενα πρόγραμμα που βρήκα και κολάει είναι:

 

#include <iostream>

#include <cstdlib>

#include <string>

using namespace std;

 

 

// Specify our connection target and credentials

const string server = "tcp://127.0.0.1:3306";

const string username = "root";

const string password = ""; // No password - thanks, WAMP Server!

 

int main()

{

sql::Driver *driver; // Create a pointer to a MySQL driver object

sql::Connection *dbConn; // Create a pointer to a database connection object

sql::Statement *stmt; // Create a pointer to a Statement object to hold our SQL commands

sql::ResultSet *res; // Create a pointer to a ResultSet object to hold the results of any queries we run

 

// Try to get a driver to use to connect to our DBMS

try

{

driver = get_driver_instance();

}

catch (sql::SQLException e)

{

cout << "Could not get a database driver. Error message: " << e.what() << endl;

system("pause");

exit(1);

}

 

// Try to connect to the DBMS server

try

{

dbConn = driver->connect(server, username, password);

}

catch (sql::SQLException e)

{

cout << "Could not connect to database. Error message: " << e.what() << endl;

system("pause");

exit(1);

}

 

stmt = dbConn->createStatement(); // Specify which connection our SQL statement should be executed on

 

// Try to query the database

try

{

stmt->execute("USE mysql"); // Select which database to use. Notice that we use "execute" to perform a command.

 

res = stmt->executeQuery("show tables"); // Perform a query and get the results. Notice that we use "executeQuery" to get results back

}

catch (sql::SQLException e)

{

cout << "SQL error. Error message: " << e.what() << endl;

system("pause");

exit(1);

}

 

// While there are still results (i.e. rows/records) in our result set...

while (res->next())

{

// ...get each field we want and output it to the screen

// Note: The first field/column in our result-set is field 1 (one) and -NOT- field 0 (zero)

// Also, if we know the name of the field then we can also get it directly by name by using:

// res->getString("TheNameOfTheField");

cout << res->getString(1) << endl;

}

 

// Clean up after ourselves

delete res;

delete stmt;

delete dbConn;

 

system("pause");

return 0;

}

Δημοσ.

Δεν εχω δουλεψει καθολου τον c++ connector αλλα

1) που σου κολαει (σε ποια γραμμη, τι ερρορ παιρνεις)

2) τσεκαρε οτι η mysql σου τρέχει κανονικά (just to be sure)

3) κοιτωντας αυτο το παραδειγμα, μετα απο το

>con = driver -> connect

χρησιμοποιει το

>con -> setSchema(database);

. Δε ξερω αν κανει τη διαφορα

4) Στο .net που παιζω εγω, το ονομα της βασης το περναω στο connection string κατευθειαν (πχ string connStr = "server=localhost;user=root;database=mydb;password=;charset=utf8"; Για δοκιμασε το ετσι

Δημοσ.

Ευχαριστώ για την προσπάθεια

Αν σου τύχει κάτι συγκεκριμένο έστω πως να γίνει η σύνδεση θέλω θα είμαι υπόχρεως

Δημοσ.

Δεν το έχω τρέξει το παρακάτω γιατί είμαι σχολείο αλλά χρειάζεται κάποια βιβλιοθήκη για να τρέξει;;;;;

 

#include <mysql.h>

#include <stdio.h>

main() {

MYSQL *conn;

MYSQL_RES *res;

MYSQL_ROW row;

char *server = "localhost";

char *user = "root";

char *password = "PASSWORD"; /* set me first */

char *database = "mysql";

conn = mysql_init(NULL);

/* Connect to database */

if (!mysql_real_connect(conn, server,

user, password, database, 0, NULL, 0)) {

fprintf(stderr, "%s\n", mysql_error(conn));

exit(1);

}

/* send SQL query */

if (mysql_query(conn, "show tables")) {

fprintf(stderr, "%s\n", mysql_error(conn));

exit(1);

}

res = mysql_use_result(conn);

/* output table name */

printf("MySQL Tables in mysql database:\n");

while ((row = mysql_fetch_row(res)) != NULL)

printf("%s \n", row[0]);

/* close connection */

mysql_free_result(res);

mysql_close(conn);

}

Δημοσ.

Καλησπέρα

κατέβασα και αυτό και δεν το τρέχει

Δεν υπάρχει αυτός ο φάκελος στα Ιnclude #include <mysql.h>

 

Βγάζει λάθος δεν το αναγνωρίζει MYSQL *conn;

 

Αν έχεις κάτι έτοιμο δώστο

Ευχαριστώ.

Δημοσ.

1) ξεζιπάρεις τον κονεκτορ κάπου στο σκληρο σου δισκο. Στο φάκελο αυτο υπάρχουν οι φάκελοι include (μεσα στον οποιο ειναι και το mysql.h) και lib

2) οριζεις στον compiler/IDE σου να προσθέσει στα include folders του τον προαναφερθεντα φακελο include. Αν χρησιμοποιεις visual studio, αυτο γίνεται απο project properties > c/c++ > General > Additional Include Directories

3) οριζεις στον compiler/IDE σου να προσθέσει στα lib folders του τον προαναφερθεντα φακελο lib. Αν χρησιμοποιεις visual studio, αυτο γίνεται απο project properties > Linker > General > Additional Library Directories

4) οριζεις στον compiler/IDE σου να κάνει link το πρόγραμμα με τη βιβλιοθήκη libmysql.lib. Αν χρησιμοποιεις visual studio, αυτο γίνεται απο project properties > linker > additional dependencies (εκεί προσθέτεις το libmysql.lib μαζί με ότι άλλο εχει ηδη εκέι)

5) προσθέτεις μία ακόμα γραμμή στον κώδικά σου, πριν το #include <mysql.h> βάλε το #include <winsock.h>

6) κανε build....

Δημοσ.

Οκ, η πρώτη μου αντίδραση θα ήταν να σε αποτρέψω από το να δουλέυεις με το ρόπαλο που λέγεται Dev C++. Υπάρχουν πολύ καλύτερα εργαλεία όπως το Visual studio c++ express, το Netbeans, το Code::Blocks κτλ κτλ

 

αλλά αν ΠΡΕΠΕΙ να χρησιμοποιήσεις το Dev...

1) κατεβάζεις αυτο το devpack

2) Από το μενού το Dev, πας Tools > Package Manager, στο παράθυρο που ανοιγει επιλέγεις Install (πάνω αριστερά), και επιλεγεις το αρχειο που μόλις κατέβασες στο βήμα 1

3) τσέκαρε αν τα αρχεια που χρειάζεσαι εγκαταστάθηκαν: πας στο φάκελο εγκαταστασης του Dev (πιθανόν C:\Dev-Cpp). Στο φάκελο lib πρεπει να είναι ενα αρχειο libmysql.a και στο φάκελο include πρέπει να ειναι νεας φάκελος mysql που μέσα του έχει αναμεσα σε ολα τ' αλλα το mysql.h

4) Στο Dev ανοίγεις τα project options (menu Project > Project Options).

4.1) Πας "Directories" > "Include Directories" και προσθέτεις το φάκελο "C:\Dev-Cpp\include\mysql"

4.2) Πας "Parameters" και γράφεις μέσα στο κουτι του linker το "-lmysql" (χωρίς τα εισαγωγικά). Αυτο του λέει να κάνει λινκ με τη βιβλιοθηκη libmysql

 

5) compile......

Δημοσ.

georgemarios

ΕΥΧΑΡΙΣΤΩ ΕΙΣΑΙ ΑΡΧΟΝΤΑΣ

Συνεχίζω να έχω προβλήματα, όποτε μπορεις γράψε 10 γραμμες κώδικα που να κάνει σε σένα σύνδεση

Σε ευχαριστώ

 

georgemarios

ΕΥΧΑΡΙΣΤΩ ΕΙΣΑΙ ΑΡΧΟΝΤΑΣ

Συνεχίζω να έχω προβλήματα, όποτε μπορεις γράψε 10 γραμμες κώδικα που να κάνει σε σένα σύνδεση

Σε ευχαριστώ

Δημοσ.

Δε μου λες όμως ΠΟΥ έχεις πρόβλημα

 

Το παρακάτω δουλεύει μια χαρά

Ανοιγει την βάση με όνομα "mysql" (υπάρχει ήδη από την εγκατασταση της mysql), και δειχενι στη κονσολα τα ονοματα ολων των πινακων

 

>
#include <winsock.h>
#include <mysql.h>
#include <stdio.h>
main() {
      MYSQL *conn;
      MYSQL_RES *res;
      MYSQL_ROW row;
      char *server = "localhost";
      char *user = "root";
      char *password = ""; 
      char *database = "mysql";
      
      conn = mysql_init(NULL);
      
      /* Connect to database */
      if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) 
      {
         fprintf(stderr, "%s\n", mysql_error(conn));
         exit(1);
      }

      /* send SQL query */
      if (mysql_query(conn, "show tables")) {
         fprintf(stderr, "%s\n", mysql_error(conn));
         exit(1);
      }
      
      res = mysql_use_result(conn);
      /* output table name */
      printf("MySQL Tables in mysql database:\n");
      while ((row = mysql_fetch_row(res)) != NULL)
            printf("%s \n", row[0]);

            /* close connection */
            mysql_free_result(res);
            mysql_close(conn);
} 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...