PQExecparams anwenden bytea?

Hallo,

ich würde gerne mit PQExecparams Daten in meine Tabelle schreiben.

Hier zeige ich ein Beispiel:

const char paramValues[4];
paramValues[0] = “joe’s place”;
paramValues[1] = “pet’s place”;
paramValues[2] = “lol’s place”;
paramValues[3] = “frrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr”;
res = PQexecParams(conn,
“insert into rawdata (measurement_fk,description,datalen,data) values(@1,@2,@3::integer,@4::bytea)”,
4, /
one param /
NULL, /
let the backend deduce param type /
paramValues,
NULL, /
don’t need param lengths since text /
NULL, /
default to all text params /
1); /
ask for binary results */


Die Tabelle enthält zwei char werte, dann ein integer und als letztes ein bytea.
Was mache ich hier falsch? hoffe für Tipps.

Falls jemand einen link hat zu einer doku, wo dies genau beschrieben ist, wäre ich auch sehr dankbar.

Es erschein immer: Cannot cast bytea in integer…

Patrick

Die bisher nicht genannte Fehlermeldung nicht zu lesen.

Falls jemand einen link hat zu einer doku, wo dies genau beschrieben ist, wäre ich auch sehr dankbar.

Es erschein immer: Cannot cast bytea in integer…

Wenn Deine Tabelle (char,char,int,bytea) ist und du versucht, als 3. Parameter “lol’s place” zu speichern, würde mich der Fehler nicht verwundern.

(ich hoffe, das obige jetzt richtig geparst zu haben, ich programmiere nicht in C.)

Andreas

Hallo,

ich wollte gernerell Fragen ob ich die Funktion richtig aufrufe.

So funktioniert es auch nicht:

void pqExecParams(char * binaryPointer, int binarylength)
{

const char paramValues[4];
int paramLengths[4];
int paramFormats[4];
int binaryIntVal = 55;
char a = (char)binaryIntVal;
paramValues[0] = “joe’s place”;
paramLengths[0] = NULL;
paramFormats[0] = NULL;
paramValues[1] = “pet’s place”;
paramLengths[1] = NULL;
paramFormats[1] = NULL;
paramValues[2] = &a;
paramLengths[2] = sizeof(binaryIntVal);
paramFormats[2] = 1; /
binary /
paramValues[3] = binaryPointer;
paramLengths[3] = binarylength;
paramFormats[3] = 1;
res = PQexecParams(conn,
“insert into rawdata (measurement_fk,description,datalen,data) values(@1,@2,@3::integer,@4::bytea)”,
4, /
one param /
NULL, /
let the backend deduce param type /
paramValues,
paramLengths, /
don’t need param lengths since text /
paramFormats, /
default to all text params /
1); /
ask for binary results */
if (PQresultStatus(res) != PGRES_COMMAND_OK)
{
char * out = PQerrorMessage(conn);
}
PQclear(res);
}
Was mache ich mit bytea falsch? Ich bekomme ein arraySystem::Byte^net handle und wandel diesen in ein char *address und länge um. Das muß man doch dann mit ::bytea angeben mitparamFormats = 1?

Patrick