Dariusz Bujak

Dariusz Bujak Student, młodszy
programista JAVA,
C++

Temat: Pobieranie danych z bazy

Witam,

mam taki problem, ponieważ chciałbym pobrać dane z bazy postgrsql
z kolumny która ma typ danych
bytea


Próbowałem używać

int size;
const char* contents;
try
{
// Will hold the number of field in employee table
int nFields;

// Start a transaction block
PGresult *res = PQexec(_conn, "BEGIN");

if (PQresultStatus(res) != PGRES_COMMAND_OK)
{
log->save("BEGIN command failed");
PQclear(res);
}

// Clear result
PQclear(res);

// Fetch rows from
ostringstream query;
string s1("DECLARE emprec CURSOR FOR SELECT portion::bytea FROM
software_file WHERE id = ");
string sk(";");

query <<
s1 << this->id << sk;

//res = PQexec(_conn, query.str().c_str());

res = PQexecParams(_conn, query.str().c_str(), 0, NULL, NULL,
NULL, NULL, 1);

if (PQresultStatus(res) != PGRES_COMMAND_OK)
{
log->save("DECLARE CURSOR failed: " + query.str());
PQclear(res);
}

// Clear result
PQclear(res);

res = PQexec(_conn, "FETCH ALL in emprec");

if (PQresultStatus(res) != PGRES_TUPLES_OK)
{
log->save(" FETCH ALL failed: " + query.str());
PQclear(res);
}

// Get the field name
nFields = PQnfields(res);

// Next, print out the employee record for each row
int i = 0;
//PGbytea

if (res && PQresultStatus(res)==PGRES_TUPLES_OK) {
size = PQgetlength(res, 0, 0);
contents = PQgetvalue(res, 0, 0); /* binary representation */
}


ale zamiena size miała wartość 13567 choc wiem że na 100% w
bazie jest plik o rozmiaze 4100. W czym jest problem?

konto usunięte

Temat: Pobieranie danych z bazy

Dlaczego nie porównasz obu plików?

Stawiam na to, że teraz musisz przekonwertować plik, albo zmienić opcję, która odpowiada za postać typu bytea:

http://www.postgresql.org/docs/9.0/static/runtime-conf...

http://www.postgresql.org/docs/9.0/static/datatype-bin...
Dariusz Bujak

Dariusz Bujak Student, młodszy
programista JAVA,
C++

Temat: Pobieranie danych z bazy

Problem w tym że baza jest w postgresql 8.4

Zapisuje dane do bazy z array<Byte>^ w programie napisanym w C++/CLI za pomocą klas private: NpgsqlDataAdapter i DataSet i próbuje je z z powrotem odczytać z tym ze już przy w jezyku C++ za pomocą biblioteki libpq-fe.h i tam już mam problem z ich odczytaniem. Jak używam C++/CLI i odczytuje dane to nie ma problemu i z powrotem odczytuje poprawnie.

Właśnie z tą konwersją mam problem.

konto usunięte

Temat: Pobieranie danych z bazy

Czy porównałeś co masz w obu plikach?
Dariusz Bujak

Dariusz Bujak Student, młodszy
programista JAVA,
C++

Temat: Pobieranie danych z bazy

Szymon G.:
Czy porównałeś co masz w obu plikach?

Przepraszam ale za bardzo nie rozumiem.

Z pomocą jednego programu zapisuje dane do bazy a za pomocą drugiego odczytuje.

Jak wykonałem sobie SELECT po tabeli to kolumna pokazuje mi dane zapisane tak jak w dokumentacji poztgrsql podaje. Teraz chciałbym te dane odczytać do takiego wyniku jak zapisałem czyli prawdopodobnie trzeba je jakoś rozkodować, problem w tym że nie wiem jak.

Biblioteka w C++/CLI bardzo ładnie dekoduje mi te dane ale niestety nie moge jej użyć w tej aplikacji która odczytuje dane z bazy

konto usunięte

Temat: Pobieranie danych z bazy

No ale co robisz z plikiem, który wyciągasz z bazy za pomocą tego swojego programu? Zapisujesz go na dysku? No to jak zapiszesz, to porównaj czym różni się plik, który zapisywałeś od tego pliku, który dostałeś.

konto usunięte

Temat: Pobieranie danych z bazy

Przykładowe kawałki kodu do operowania na PG są tu: http://www.postgresql.org/docs/8.4/static/libpq-exampl...
Jeżeli miałbym to zrobić - wystartowałbym od przykładu. Potem dodawał kolejne elementy... Przykład jest z selectem, nie z kursorem. Tu jest przykład z kursorem - http://www.digipedia.pl/pgsql/8.4/libpq-example.html



Wyślij zaproszenie do