16. juni 2003 - 00:20Der er
23 kommentarer og 1 løsning
mysql og c++
Er der en som har lyst til at lave en BEGYNDER kode til mig som jeg kan sætte ind i dev-c++ og kompile.
Jeg har kigget lidt på gamle spørgsmål men kan simpelthen ikke finde hovede og hale i noget af det.
Jeg skal bruge et program, som kan vise nogle dataer fra min mysql server. Og helst ikke bare i en konsol, men som en form i windows.
Jeg har fundet ud af at inkludere mysql.h men har ikke engang præsteret at få nogle data ud i en simpel konsol. Problemet er at jeg ikke kender grundlæggende c++ men er meget inde i php og vil godt videre med c++ altså ikke kun i/o koder.
Jeg har altså brug for en kode som jeg kan paste ind i dev-c++ (har osse borlands c++, med det er vidst noget af den samme kompiler) ændre det der nu skal ændres og kompile det.
Det er et fint script, og det ville sikkert osse virke hvis den da ikke fejlede i alle funktionerne fx SQLAllocEnv() og SQLAllocConnect() Min php hjerne kan slet ikke regne fejlen ud. Men det er da første gang at jeg er kommet så langt :) Det virker som om at der mangler at bliver included en fil....:\
Det ser ud til at alle funktionerne ikke findes da alle funktionerne i koden ender ud i fejl. [Linker error] undefined reference to `SQLAllocEnv@4'
[Linker error] undefined reference to `SQLAllocConnect@8'
[Linker error] undefined reference to `SQLConnect@28' osv...
Det sker lige når kompilingen er ved at være færdig, den prøver faktisk at lave filen, men kan ikke. C:\Program Files\Dev-Cpp\Makefile.win [Build Error] [Projekt1.exe] Error 1
Når man bruger ODBC så definerer man en DSN i Windows's ODBC Manager program (giver et navn som peger på en database) og lader sit program connecte til DSN navnet.
#include <windows.h> // to header filer der er nødvednige for at kunne lave ODBC kald #include <sql.h> #include <sqlext.h>
// DSN + brugernavn + kodeord (jeg har testet mod en Access database, men alt kan bruges) char* dsn = "TestMSAccess"; char* un = ""; char* pw = ""; // en stump SQL som jeg vil teste med char* sqlstr = "SELECT * FROM T1";
int main(int argc, char *argv[]) { SQLHENV Environment; SQLHDBC DataBaseConnect; SQLHSTMT stmt; SQLRETURN stat; // initialiser ODBC stat = SQLAllocEnv(&Environment); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) cerr << "Error in AllocEnv" << endl; // alloker connection stat = SQLAllocConnect(Environment,&DataBaseConnect); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) cerr << "Error in AllocConnect" << endl; // connect til database stat = SQLConnect(DataBaseConnect, (SQLCHAR *)dsn,strlen(dsn), (SQLCHAR *)un,strlen(un), (SQLCHAR *)pw,strlen(pw)); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) cerr << "Error in Connect" << endl; // alloker statement stat = SQLAllocStmt(DataBaseConnect,&stmt); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) cerr << "Error in AllocStmt" << endl; // udfør SQL sætning stat = SQLExecDirect(stmt,(SQLCHAR *)sqlstr,strlen(sqlstr)); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) cerr << "Error in ExecDirect" << endl; int i,il,sl; char s[10]; // første kolonne skal gemmes i integer variablen i stat = SQLBindCol(stmt,1,SQL_C_LONG,&i,sizeof(i),(SQLINTEGER *)&il); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) cerr << "Error in BindCol" << endl; // anden kolonne skal gemmes i char arrayet s stat = SQLBindCol(stmt,2,SQL_C_CHAR,s,sizeof(s),(SQLINTEGER *)&sl); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) cerr << "Error in BindCol" << endl; // kør i løkke (indtil vi udfører break) for(;;) { // hent række stat = SQLFetch(stmt); // hop ud hvis ikke flere data if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) break; // udskriv data s[sl] = '\0'; cout << i << " " << s << endl; } // frigør divers eressourcer SQLFreeStmt(stmt,SQL_DROP); SQLDisconnect(DataBaseConnect); SQLFreeConnect(DataBaseConnect); SQLFreeEnv(Environment); system("PAUSE"); return 0; }
det gav da ihvertfald en smule afklaring, takker... tænkte på om du har et link til nogle referancer for sql.h og sqlext.h headerne (kunne ikke finde noget på cpluscplus.com)
Sorry, fandt lige pludeselig ud af at sprøgsmålet var åbent!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.