28. august 2003 - 21:37
Der er
10 kommentarer og 1 løsning
mysql API
Hej Jeg skal benyttes en MySQL database fra C++. Findes der API eller andet godt til dette?? Det er ren rå C++, ikke noget fancy med borland komponenter ;o). Hvordan gør man dette??
Annonceindlæg fra Salesforce
28. august 2003 - 21:38
#1
MySQL kommer med et C API. Her er et eksempel jeg tidligere har postet: #include <stdio.h> #include <stdlib.h> #include "mysql.h" int main() { MYSQL *handle; MYSQL_RES *result; MYSQL_ROW row; int nfields; int *l; int i; handle= mysql_init(NULL); if(handle == NULL) { printf("MySQL error: %s", mysql_error(handle)); exit(1); } if(!mysql_real_connect(handle, "localhost", "", "", "Test", 0, NULL, 0)) { printf("MySQL error: %s", mysql_error(handle)); exit(1); } mysql_query(handle, "SELECT * FROM T1"); result = mysql_store_result(handle); nfields = mysql_num_fields(result); while ((row = mysql_fetch_row(result))) { l = (int *)mysql_fetch_lengths(result); for (i=0; i<nfields; i++) { printf(" %.*s", l[i], row[i] ? row[i] : "NULL"); } printf("\n"); } mysql_free_result(result); mysql_close(handle); return 0; }
28. august 2003 - 21:39
#2
C API virker naturligvis også i C++. Der er også noget C++ til MySQL, men det er ofte problematisk at få det til at virke. Et reelt alternativ er standard ODBC kald !
28. august 2003 - 21:40
#3
hmm ja C API eller ODBC hvor stor forskel er der??
28. august 2003 - 21:43
#4
Stor forskel. MySQL C API er nok nemmere at bruge. Men med ODBC er du database uafhængig. MySQL eller Access eller noget tredie betyder ikke noget.
28. august 2003 - 21:44
#5
Du får lige et C++ ODBC eksempel for at kunen vurdere forskellen: #include <iostream> using namespace std; #include <stdlib.h> #include <windows.h> #include <sql.h> #include <sqlext.h> char* dsn = "TestMSAccess"; char* un = ""; char* pw = ""; char* sqlstr = "SELECT * FROM T1"; int main(int argc, char *argv[]) { SQLHENV Environment; SQLHDBC DataBaseConnect; SQLHSTMT stmt; SQLRETURN stat; stat = SQLAllocEnv(&Environment); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) cerr << "Error in AllocEnv" << endl; stat = SQLAllocConnect(Environment,&DataBaseConnect); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) cerr << "Error in AllocConnect" << endl; 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; stat = SQLAllocStmt(DataBaseConnect,&stmt); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) cerr << "Error in AllocStmt" << endl; 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]; 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; 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; for(;;) { stat = SQLFetch(stmt); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) break; s[sl] = '\0'; cout << i << " " << s << endl; } SQLFreeStmt(stmt,SQL_DROP); SQLDisconnect(DataBaseConnect); SQLFreeConnect(DataBaseConnect); SQLFreeEnv(Environment); system("PAUSE"); return 0; }
28. august 2003 - 21:48
#6
hehe jeg så også lige på mysql dokumentation om C++, den har de godt nok snørklet noget. Forlige at være total besværlig har du så en ODBC?? tror mange vil kunne benytte denne tråd ;)
28. august 2003 - 22:31
#7
Jeg formoder at ODBC eksemplet var OK.
28. august 2003 - 22:41
#8
ok takker. nu mangler jeg bare lige mysql.h
28. august 2003 - 22:44
#9
mysql.h (og libmysql.lib + libmysql.dll som du også skal bruge) kommer med MySQL !
28. august 2003 - 22:47
#10
jeps ok men jeg skal i kontakt med en mysql database på en anden maskine end den jeg sidder på og her er ikke mysql.....hvor får jeg det jeg behøver
28. august 2003 - 22:53
#11
Haps include og lib directoriet fra en maskine med MySQL. Eller endnu bedre installer MySQL på din udviklings-maskine. Fordi så kan du teste på livet løs uden at genere nogen.
Kurser inden for grundlæggende programmering