== Suche hilfe bei DB-Telefon Projekt ==
-
hallo ich brauch mal wieder hilfe
hat jemand erfahrung mit cpp ODBC?
ich will ja an den filmaker anbendelnblos hab irgend n schreiß problem
0xa0001c4c Failed to connect The driver reported the following diagnostics whilst running SQLDriverConnect
mit dem SQLDriverConnect()
http://msdn2.microsoft.com/en-us/library/ms715433.aspxschätze mal es liegt am Connection string
habe mir den richtigen für den filemaker hier rausgesucht
http://www.connectionstrings.com/default.aspx?carrier=filemakerfunzt aber trozdem nicht
treiber ist installiert - checkhabe ich mir mit diesem code anzeigen lassen
#include <stdio.h> #include <sql.h> #include <sqlext.h> main() { SQLHENV env; char dsn[256]; char desc[256]; SQLSMALLINT dsn_ret; SQLSMALLINT desc_ret; SQLUSMALLINT direction; SQLRETURN ret; SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env); SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0); direction = SQL_FETCH_FIRST; while(SQL_SUCCEEDED(ret = SQLDataSources(env, direction, einsetze dsn, sizeof(dsn), &dsn_ret, desc, sizeof(desc), &desc_ret))) { direction = SQL_FETCH_NEXT; printf("%s - %s\n", dsn, desc); if (ret == SQL_SUCCESS_WITH_INFO) printf("\tdata truncation\n"); } }
odbcfms - FileMakerODBCsystem odbcfmu - FileMakerODBCuser test has exited with status 0.
egal welchen von beinden treibernnamen ich nun einsetze es funzt nicht
hier mein SQLDriverConnect()
SQLDriverConnect(dbc, NULL, (SQLCHAR*)"AllAsText=0;ApplicationUsingThreads=1;FetchChunkSize=100;Driver=odbcfms;FileOpenCache=0;IntlSort=0;MaxTextlength=255;ServerAddress=127.0.0.1;TranslationOption=0;UseRemoteConnection=1;", sizeof("AllAsText=0;ApplicationUsingThreads=1;FetchChunkSize=100;Driver=odbcfms;FileOpenCache=0;IntlSort=0;MaxTextlength=255;ServerAddress=127.0.0.1;TranslationOption=0;UseRemoteConnection=1;"), outstr, 255, &outstrlen,SQL_DRIVER_NOPROMPT);
kann mir jemand helfen?
-
oh, grausam!
sizeof liefert dir so NICHT die Länge des Strings zurück.
Mach es besser so:
SQLCHAR *pStr = "AllAsText=0;ApplicationUsingThreads=1;FetchChunkSize=100;Driver=odbcfms;FileOpenCache=0;IntlSort=0;MaxTextlength=255;ServerAddress=127.0.0.1;TranslationOption=0;UseRemoteConnection=1;"; SQLDriverConnect(dbc, NULL, pStr, strlen(pStr), outstr, 255, &outstrlen,SQL_DRIVER_NOPROMPT);
Edit: Tippfehler beseitigt
-
thx
aber hat nix genützt bringt immer noch den selben fehler
so siehts jetzt aus
char *pStr = "AllAsText=0;ApplicationUsingThreads=1;FetchChunkSize=100;Driver=odbcfms;FileOpenCache=0;IntlSort=0;MaxTextlength=255;ServerAddress=127.0.0.1;TranslationOption=0;UseRemoteConnection=1;"; SQLDriverConnect(dbc, NULL,(SQLCHAR*) pStr, strlen(pStr),outstr, sizeof(outstr), &outstrlen,SQL_DRIVER_COMPLETE);
-
nino2 schrieb:
thx
aber hat nix genützt bringt immer noch den selben fehler
so siehts jetzt aus
char *pStr = "AllAsText=0;ApplicationUsingThreads=1;FetchChunkSize=100;Driver=odbcfms;FileOpenCache=0;IntlSort=0;MaxTextlength=255;ServerAddress=127.0.0.1;TranslationOption=0;UseRemoteConnection=1;"; SQLDriverConnect(dbc, NULL,(SQLCHAR*) pStr, strlen(pStr),outstr, sizeof(outstr), &outstrlen,SQL_DRIVER_COMPLETE);
Wäre hier nicht std::string zusammen mit str.c_str() & str.size() mehr zu empfehlen?
-
^^
so funktioniert es jetzt wunderbar
char *pStr = "AllAsText = 0;" "ApplicationUsingThreads= 1;" "FetchChunkSize = 100;" "DRIVER = odbcfms;" // <-- der treiber name den ich im "ODBC Administrator.app" angelegt habe "UID = user" // <-- der nutzername der im filemaker angelegt wurde "PWD = pw" // <-- pw des nuzers "FileOpenCache = 0;" "IntlSort = 0;" "MaxTextlength = 255;" "ServerAddress = 127.0.0.1;" // <- server adresse natürlich local "TranslationOption = 0;" "UseRemoteConnection = 1;"; SQLDriverConnect(dbc, NULL,(SQLCHAR*) pStr, strlen(pStr),outstr, sizeof(outstr), &outstrlen,SQL_DRIVER_COMPLETE); cout<<"\n\nConnect to Filemaker ODBC Driver .... "; if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) { cout<<"OK\n\nReturned connection string was:\n\t"<<outstr<<"\n\n\n"; if (ret == SQL_SUCCESS_WITH_INFO) { cout<<"Driver reported the following diagnostics\n"<<endl; extract_error("SQLDriverConnect", dbc, SQL_HANDLE_DBC); } } else { cout<<stderr<<" Failed to connect\n"<<endl; extract_error("SQLDriverConnect", dbc, SQL_HANDLE_DBC); }
Connect to Filemaker ODBC Driver .... OK Returned connection string was: \367\210\277\377\367\210
jetz hängt er sich aber an der nächsten stelle auf
return = SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
mag er nich machen
bringt mir der debuger
SQLAllocStmt_Internal -> 0x9893d130 <+0056> lwz r0,36(r3) SQLAlloHandle_Internal -> 0x9894529c <+0180> b 0x989453f4 <SQLAllocHandle_Internal+524> SQLAlloHandle -> 0x989454dc <+0212> lwz r0,0(r26) und main.cpp eben -> ret = SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
weis jemand rat?
-
was soll return = SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt); für ne syntax sein? meinst du vielleicht return SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);?
-
nein
return is ein objekt vom typ SQLRETURN ich speichere da den rückgabewert reinhabs schon umgenant in ret
SQLRETURN ret;
^^
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum Projekte verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Dieser Thread wurde von Moderator/in Korbinian aus dem Forum Projekte in das Forum Datenbanken verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
ach scheiß der SQLDriverConnect() hat deshalb gefunzt weil ich oben zeile 16
SQLDriverConnect(dbc, NULL,(SQLCHAR*) pStr, strlen(pStr),outstr, sizeof(outstr), &outstrlen,SQL_DRIVER_COMPLETE);
das "ret = " vergessen habe
so rutscht er natürich durch die fehler behandlung den in ret ist ja noch SQL_SUCCESS vom letzten allochandleringweil ichs hier ausm forum kopiert habe
also kommando zurück SQLDriverConnect() funt immer noch nich leig immer noch am connecting string als parameter schätze ich