Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Połączenie się z bazą danych, prośba o pomoc

Ostatnio zmodyfikowano 2013-04-01 20:37
Autor Wiadomość
kubek3898
Temat założony przez niniejszego użytkownika
Połączenie się z bazą danych, prośba o pomoc
» 2013-03-09 14:37:23
Wpadłem na pomysł, by zrobić ciekawą grę, może i konsolową, ale to nie jest w tej chwili ważne ;). Ważne jest to, że zamiast zapisu do pliku itp, itd. postanowiłem zapisywać dane w bazie MySQL (szybkość, prostota zapisu etc.), znalazłem więc taki kod na połączenie z bazą:

C/C++
#include <mysql.h>
#include <stdio.h>

int main() {
   
    MYSQL mysql;
    MYSQL_ROW row;
    MYSQL_RES * result;
   
    unsigned int num_fields;
    unsigned int i;
   
    mysql_init( & mysql );
   
    if( !mysql_real_connect( & mysql, "localhost", "root", "", "MyDatabase", 0, NULL, 0 ) )
    {
        fprintf( stderr, "Failed to connect to database: Error: %s\n",
        mysql_error( & mysql ) );
    }
    else {
        if( mysql_query( & mysql, "SELECT * FROM my_table" ) );
        //here goes the error message :o)
        else {
            result = mysql_store_result( & mysql );
            num_fields = mysql_num_fields( result );
            while(( row = mysql_fetch_row( result ) ) )
            {
                unsigned long * lengths;
                lengths = mysql_fetch_lengths( result );
                for( i = 0; i < num_fields; i++ )
                {
                    printf( "[%.*s] \t",( int ) lengths[ i ], row[ i ] ? row[ i ]
                        : "NULL" );
                }
                printf( "\n" );
            }
        }
    }
   
    return 0;
   
}

Po kompilacji wyskoczyły mi błędy, że jakiś SOCKET jest niezdefiniowany, a dokładniej:

268 3 d:\programy\dev-cpp\mingw32\include\mysql_com.h [Error] 'SOCKET' does not name a type

poczytałem gdzieś, że trzeba dodać bibliotekę windows.h, więc ją dodałem, to wyskoczyły mi następujące errory:

   [Linker error] main.cpp:213: undefined reference to `mysql_init@4'   

[Linker error] main.cpp:229: undefined reference to `mysql_fetch_lengths@4'

Jest tego więcej ale wszystkie podobne. Proszę o pomoc jak to rozwiązać i nie pisanie postów w stylu: "Nie opłaca się połączać z MySQL".

Pozdrawiam.

@edit

Dodałem do opcji linkera wpis: -lmysql i teraz wyrzuca błędy:

   resolving _mysql_init@4 by linking to _mysql_init
   resolving _mysql_real_connect@32 by linking to _mysql_real_connect

Również jest tego więcej, jak w/w
P-77970
DejaVu
» 2013-03-09 15:36:02
http://lists.mysql.com/mysql/200178

gcc -o test  -L/usr/lib/mysql -lmysqlclient test.c

Czyli do linkera należy dodać bibliotekę:
-lmysqlclient
P-77975
kubek3898
Temat założony przez niniejszego użytkownika
» 2013-03-09 16:43:43
Gdy dodam -lmysqlclient do linkera wyrzuca:

 
.drectve `/DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"LIBCMT" /DEFAULTLIB:"OLDNAMES" ' unrecognized

i tak jakieś 500 razy ;x
P-77982
DejaVu
» 2013-03-09 18:14:52
może po prostu nie masz pliku lib odpowiedniego dla swojego kompilatora...
P-77992
kubek3898
Temat założony przez niniejszego użytkownika
» 2013-03-30 17:16:16
Odświeżam... znów muszę wykorzystać MySQL do mojego projektu.

Przy takim kodzie:

C/C++
#include <iostream>
#include <windows.h>
#include <mysql.h>

using namespace std;

int main()
{
    MYSQL * mysql;
    mysql_real_connect( mysql, "195...", "root", "Haslo", "Test", 0, NULL, 0 );
    return 0;
}

wyrzuca:

  [Linker error] undefined reference to `mysql_real_connect@32'

do linker kolejno dodane:

-lmysql -lmysqlclient
P-79620
kubek3898
Temat założony przez niniejszego użytkownika
» 2013-04-01 20:37:34
@refresh

Potrzebuję Waszej pomocy! :D
P-79747
« 1 »
  Strona 1 z 1