Skip site navigation (1) Skip section navigation (2)

Libpq - multibyte character support

From: "Pradeepkumar, Pyatalo (IE10)" <Pradeepkumar(dot)Pyatalo(at)honeywell(dot)com>
To: pgsql-novice(at)postgresql(dot)org
Subject: Libpq - multibyte character support
Date: 2005-09-06 06:35:08
Message-ID: 77ED2BF75D59D1439F90412CC5B1097423EF781C@ie10-sahara.hiso.honeywell.com (view raw or flat)
Thread:
Lists: 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

Next:From: meDate: 2005-09-06 09:32:33
Subject: Re: Last Id?
Previous:From: Michael FuhrDate: 2005-09-06 04:52:08
Subject: Re: ERROR: 42P01: relation "<tableName" does not exist"

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group