Using variables from c to be passed into PQexec

Started by Nonameabout 24 years ago4 messagesgeneral
Jump to latest
#1Noname
vikashb@mweb.co.za

Greetings,

I am a novice programmer and I am now totally lost,
I've been through the web trying to find a solution,
If I've posted on the wrong place please advise.

If I have this line in the code, I get there desired result.
res = PQexec(conn, "DECLARE mycursor CURSOR FOR select * from currpass
where sitename = 'tvl'");
I get :
------------------------------------------------------------------
sitename password date time

tvl Zb0sj1sds 2002-02-13 12:21:00
------------------------------------------------------------------

If I do this:
strcat(querystr,"\"DECLARE mycursor CURSOR FOR select * from currpass
where sitename = \'tvl\'\");
fprintf(stdout,"%s\n", querystr);
res = PQexec(conn, querystr);

I get
---------------------------------------------------------------------------
Output of fprintf:
"DECLARE mycursor CURSOR FOR select * from currpass where sitename =
'tvl'"

Error Message:
NOTICE: identifier "DECLARE mycursor CURSOR FOR select * from
currpass where si
tename = 'tvl'" will be truncated to "DECLARE mycursor CURSOR FOR sel"
DECLARE CURSOR command failed

-----------------------------------------------------------------------------

What am I missing ?

Please assist

Vikash

#2Carl van Tast
vanTast@Pivot.at
In reply to: Noname (#1)
Re: Using variables from c to be passed into PQexec

On 14 Feb 2002 21:55:00 -0800, vikashb@mweb.co.za (Vikash Badal)
wrote:

strcat(querystr,"\"DECLARE mycursor CURSOR FOR select * from currpass
where sitename = \'tvl\'\");

Vikash,
double quotes tell the C compiler, where a string literal starts and
ends. Otherwise DECLARE would be interpreted as a name of a variable
and the next word wolud be a syntax error. Your querystr should not
*contain* the double quotes. So

strcat(querystr,"DECLARE mycursor CURSOR FOR select * from currpass
where sitename = 'tvl'");

should do the trick. BTW, are you sure you want strcat and not
strcpy?

Kind regards,
Carl van Tast

#3Tim Barnard
tbarnard@povn.com
In reply to: Noname (#1)
Re: Using variables from c to be passed into PQexec

Don't pass in the double-quotes in your call. In other words:

strcat(querystr,"DECLARE mycursor CURSOR FOR select * from currpass
where sitename = \'tvl\'");

should work.

Tim

----- Original Message -----
From: "Vikash Badal" <vikashb@mweb.co.za>
To: <pgsql-general@postgresql.org>
Sent: Thursday, February 14, 2002 9:55 PM
Subject: [GENERAL] Using variables from c to be passed into PQexec

Greetings,

I am a novice programmer and I am now totally lost,
I've been through the web trying to find a solution,
If I've posted on the wrong place please advise.

If I have this line in the code, I get there desired result.
res = PQexec(conn, "DECLARE mycursor CURSOR FOR select * from currpass
where sitename = 'tvl'");
I get :
------------------------------------------------------------------
sitename password date time

tvl Zb0sj1sds 2002-02-13 12:21:00
------------------------------------------------------------------

If I do this:
strcat(querystr,"\"DECLARE mycursor CURSOR FOR select * from currpass
where sitename = \'tvl\'\");
fprintf(stdout,"%s\n", querystr);
res = PQexec(conn, querystr);

I get
--------------------------------------------------------------------------

-

Output of fprintf:
"DECLARE mycursor CURSOR FOR select * from currpass where sitename =
'tvl'"

Error Message:
NOTICE: identifier "DECLARE mycursor CURSOR FOR select * from
currpass where si
tename = 'tvl'" will be truncated to "DECLARE mycursor CURSOR FOR sel"
DECLARE CURSOR command failed

--------------------------------------------------------------------------

---

Show quoted text

What am I missing ?

Please assist

Vikash

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

#4Oliver Elphick
olly@lfix.co.uk
In reply to: Noname (#1)
Re: Using variables from c to be passed into PQexec

On Fri, 2002-02-15 at 05:55, Vikash Badal wrote:

If I do this:
strcat(querystr,"\"DECLARE mycursor CURSOR FOR select * from currpass

^^

where sitename = \'tvl\'\");

^^
Why the double quotes?

They turn your command into a single identifier (whose length is limited
to 31 characters):

NOTICE: identifier "DECLARE mycursor CURSOR FOR select * from
currpass where si
tename = 'tvl'" will be truncated to "DECLARE mycursor CURSOR FOR sel"
DECLARE CURSOR command failed

I don't think you need to escape the single quotes either:
strcat(querystr,"DECLARE mycursor CURSOR FOR select * from currpass
where sitename = 'tvl'");

--
Oliver Elphick Oliver.Elphick@lfix.co.uk
Isle of Wight http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839 932A 614D 4C34 3E1D 0C1C

"My sheep hear my voice, and I know them, and they
follow me; And I give unto them eternal life; and they
shall never perish, neither shall any man pluck them
out of my hand." John 10:27,28