Обсуждение: libpq++ and arrays?
Hi all
I have the following problem:
I'm using libpq++ to acces a Postgres-Database.
The table was created in psql using:
create table test values (nr int4, some_value float4[]);
in my C++-program a piece of code is:
main()
{
char *nr_string, *some_other_string;
PgDatabase test(pgenv, "test");
test.Exec("begin");
test.Exec("declare c cursor for select * from test");
for(int i=0; i<test.Tuples();i++)
{
nr_string = test.GetValue(i, "nr"); // obtaining the value in 'nr' is easy
some_other_string = test.GetValue(i, "some_value[1]"); // this gives an error
// PQgetvalue: ERROR! field number -1 is out of range
// so how do I obtain values in some_value[1], some_value[2] .... ?
}
}
any help would be appreciated.
bye
Alf Lewerken
Alf Lewerken wrote:
>
> I have the following problem:
> I'm using libpq++ to acces a Postgres-Database.
>
> The table was created in psql using:
> create table test values (nr int4, some_value float4[]);
...
> // so how do I obtain values in some_value[1], some_value[2] .... ?
How about
create table test (nr int4, some_value float4[]);
insert into test values (1,'{1,2,3}');
insert into test values (2,'{2,4,6}');
insert into test values (3,'{3,6,9}');
#include <iostream>
#include <libpq++.h>
int main()
{ const char *nr_string, *val1, *val2;
PgDatabase test("test"); test.Exec("select nr,test.some_value[1] as val1, test.some_value[2] as val2 " "from
test"); for(int i=0; i<test.Tuples();i++) { nr_string = test.GetValue(i, "nr"); val1 = test.GetValue(i, "val1");
val2 = test.GetValue(i, "val2"); cout<<"nr_string: "<<nr_string <<"\nsome_value[1]: "<<val1
<<"\nsome_value[2]:"<<val2<<'\n'; }
return 0;
}
% a.out
nr_string: 1
some_value[1]: 1
some_value[2]: 2
nr_string: 2
some_value[1]: 2
some_value[2]: 4
nr_string: 3
some_value[1]: 3
some_value[2]: 6
Add cursors to taste :)
Cheers,
Patrick
I've been upgrading postgresql 6.4.2 to 6.5. It seems like the jdbc driver
included with postgres 65 doesn't work correctly:
java.lang.IllegalArgumentException: Argument # > Arg length
or am i doing something wrong ?
-Yves
On Fri, 14 May 1999, Alf Lewerken wrote:
> Hi all
>
> I have the following problem:
> I'm using libpq++ to acces a Postgres-Database.
>
> The table was created in psql using:
> create table test values (nr int4, some_value float4[]);
>
> in my C++-program a piece of code is:
>
> main()
> {
> char *nr_string, *some_other_string;
>
> PgDatabase test(pgenv, "test");
> test.Exec("begin");
> test.Exec("declare c cursor for select * from test");
>
> for(int i=0; i<test.Tuples();i++)
> {
> nr_string = test.GetValue(i, "nr"); // obtaining the value in 'nr' is easy
>
> some_other_string = test.GetValue(i, "some_value[1]"); // this gives an error
> // PQgetvalue: ERROR! field number -1 is out of range
>
> // so how do I obtain values in some_value[1], some_value[2] .... ?
> }
> }
>
> any help would be appreciated.
>
>
> bye
>
>
> Alf Lewerken
>
=================================================================
First, they ignore you.
Then they laugh at you.
Then they fight you.
Then you win. -- M. Ghandi