FW: Libpq - multibyte character support - Mailing list pgsql-novice

From Pradeepkumar, Pyatalo (IE10)
Subject FW: Libpq - multibyte character support
Date
Msg-id 77ED2BF75D59D1439F90412CC5B1097423F23FAF@ie10-sahara.hiso.honeywell.com
Whole thread Raw
List pgsql-novice

    Hi all,

    My question is does PgSQL libpq functions support multibyte characters...if not then is there a way to provide multibyte data to Postgres using libpq functions. The other question is does Postgres support Chinese characters....if I insert chinese characters into a table, when I read, will I get the same chinese characters. Please help me out in this regard.

    I have created a database with UNICODE support which has a table GSNames(Gsname varchar(40), status int, errorcode int)
    I tried to insert into this table from a simple C program using libpq functions....but it gives error as libpq does not support wchar datatypes. Here is the code -

    int main()
    {
    //      wchar_t szQuery[255];
            char szQuery[255];

            PGconn *DBCon;
            PGresult *DBResult;

            //Connect to the database with default settings
            DBCon = PQsetdbLogin(NULL, NULL, NULL, NULL, "test1", "postgres", ""); //test1 is database created with UNICODE encoding

            //check if there is any error in connecting to the database
            if(PQstatus(DBCon) == CONNECTION_BAD)
            {
                    fprintf(stderr,"\nGetAttributeInfo(): Connection to database failed.");
                    fprintf(stderr,"\nGetAttributeInfo(): %s", PQerrorMessage(DBCon));
                    return ERROR_DB_CON;
            }
            else
            {
                    fprintf(stderr,"\nGetAttributeInfo(): Connection to database successful.");
            }
           
            //form the DELETE command as character buffer.
            //swprintf(szQuery,500,L"INSERT INTO gsnames values('×¢²á',2,2)");
            sprintf(szQuery,"INSERT INTO gsnames values('×¢²á',2,2)");

            //execute the command.
            DBResult = PQexec(DBCon, (char *)szQuery);

            //check for any errors in executing the query.
            if(PQresultStatus(DBResult) != PGRES_COMMAND_OK)
            {
                    fprintf(stderr,"\nGetAttributeInfo(): %s", PQresultErrorMessage(DBResult));
                    PQclear(DBResult);
                    PQfinish(DBCon);
                    return ERROR_DB_EXEC;
            }
            else
            {
                    fprintf(stderr,"\nDBInsertPointAttribute(): Insertion successful. No. of rows affected = %d.", PQntuples(DBResult));

            }

            PQclear(DBResult);
            PQfinish(DBCon);

            return 0;
    }

    The problem is I am not able to pass multibyte characters to postgres. Please help.....Thanks in advance.

    Regs,
    Pradeep

pgsql-novice by date:

Previous
From:
Date:
Subject: Re: Last Id?
Next
From: Oliver Elphick
Date:
Subject: Re: howto to do an automated backup on windows xp?