Обсуждение: How to insert a string with single quotes in the text

Поиск
Список
Период
Сортировка

How to insert a string with single quotes in the text

От
"Louise Cofield"
Дата:

Greetings:

 

I am creating a Libpq program that reads a text file, and inserts values into a Postgres table.  An example of my insert statement looks like this:

 

SPRINTF(str, “INSERT INTO itm_table (itm_num, itm_desc) values (‘%s’, ‘%s’);”, sitmnum, sitmdesc);

 

The insert blows up when it hits an item description that contains a single quote in the text. 

 

Other than stripping the offending quote-marks from  the text prior to processing, does anybody have any ideas how I can deal with this?

 

I appreciate all help!

 

Louise

Re: How to insert a string with single quotes in the

От
Oliver Elphick
Дата:
On Fri, 2003-09-19 at 22:02, Louise Cofield wrote:
> I am creating a Libpq program that reads a text file,
...
> The insert blows up when it hits an item description that contains a
> single quote in the text.  

You also have to look out for backslashes.

> Other than stripping the offending quote-marks from  the text prior to
> processing, does anybody have any ideas how I can deal with this?

The libpq library includes the function PQescapeString, as described in
the manual.

-- 
Oliver Elphick                                Oliver.Elphick@lfix.co.uk
Isle of Wight, UK                             http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839  932A 614D 4C34 3E1D 0C1C
========================================   "But my God shall supply all your need according to his     riches in glory
byChrist Jesus."     Philippians 4:19
 



Re: How to insert a string with single quotes in the text

От
Bruno Wolff III
Дата:
On Fri, Sep 19, 2003 at 15:02:07 -0600, Louise Cofield <lcofield@box-works.com> wrote:
> 
> I am creating a Libpq program that reads a text file, and inserts values
> into a Postgres table.  An example of my insert statement looks like
> this:
> 
> SPRINTF(str, "INSERT INTO itm_table (itm_num, itm_desc) values ('%s',
> '%s');", sitmnum, sitmdesc);
> 
> Other than stripping the offending quote-marks from  the text prior to
> processing, does anybody have any ideas how I can deal with this?

Scan the input and put backslashes in front of backslashes and single quotes.