== Suche hilfe bei DB-Telefon Projekt ==



  • mit der funktion das hatte ich auch so vor

    aber ma zu dem resv()
    ich hab eben gestern gelesen das resv() alles als bytestream zurück giebt

    wandelt der =operator das automatsich in ASCII um wenn ich das in ein String objekt stecke anstadt ein einfaches char[1024]
    wird da n unterscheid gemacht?

    wie wandele ich jetz den bytecode in ASCII um damit ich den normalen string bearbeiten kann
    were natürlich viel geiler



  • Strings bestehen doch quasi aus "Byte-Code". Jedem Buchstabe aus dem ASCII-Alphabet ist eine Zahl zugeordnet, z.B. dem 'A' die 65 bzw 0x41. Ein char[1024] kannst du als Byte-Folge oder als String interpretieren, je nachdem was dadrin steckt. In deinem Fall steckt ein String drin, also ist es einer...
    Irgendwie sieht dein Code auch nicht soooo sehr nach C++ aus.. Oder seit wann kann man eine Membervariable schon in der Deklaration initialisieren 😕

    e: je nachdem, wie die String-Klasse aufgebaut ist, müsste sie eigentlich den Zuweisungsoperator "=" auf char[] unterstützen.



  • ging das nicht der member variable schon ne wert zuteilen? mir wars so

    mit welchen funktionen kann ich mir jetz den index der erstn oder des letzen zeichens des gefunden strings zurückgeben lassen
    werde doch den index brauchen damit ich ab da anfangen kann die telefonummer rauszuscheiden

    gibts doch sicherlich ne funktion



  • hallo ich brauch mal wieder hilfe

    hat jemand erfahrung mit cpp ODBC?
    ich will ja an den filmaker anbendeln

    blos 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.aspx

    schätze mal es liegt am Connection string
    habe mir den richtigen für den filemaker hier rausgesucht
    http://www.connectionstrings.com/default.aspx?carrier=filemaker

    funzt aber trozdem nicht
    treiber ist installiert - check

    habe 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 rein

    habs 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 allochandlering 😑

    weil 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


Anmelden zum Antworten