Problems updating rows
am 27.07.2006 21:53:32 von Pascal ViandierHi,
I am modifying existing programs that were bound to Informix to use ODBC.
All this under SUN Solaris.
I use unixODBC and setup 3 databases to connect to through ODBC:
- Informix ODBC (CLI)
- MySQL
- PostgreSQL.
I have a test program that makes various ODBC calls (Connect, Select, Inser=
t,
Update, Delete) to these databases. This program works well with the two ot=
hers.
I use PostgreSQL 8.1.4 and psqlodbc-08.01.0200.
My problem with the PostgreSQL ODBC is: I cannot Update or Delete rows using
SQLSetPos().
I have seen many threads on this subject in this newsgroup but I cannot fig=
ure
out what to do to have it work.
First, I re-created the database with oids since they look essential in this
case.
Then I put UpdatableCursors=3D1 in odbc.ini, as seen in other threads
Here is the odbc.ini part for pgodbc:
[lt]
Driver=3D/home/pascal/ODBC/libpsqlodbcw.so
Description=3DPostgreSQL ODBC DRIVER
ServerName=3Dmbench
Database=3Dlt
Port=3D5432
UserName=3Dpostgres
Password=3Dpostgres
ReadOnly=3D0
RowVersioning=3D1
ShowSystemTables=3D0
ShowOidColumn=3D1
FakeOidIndex=3D0
UpdatableCursors=3D1
UseDeclareFetch=3D1
CommLog=3D1
Debug=3D1
Trace=3DYes
TraceFile=3D/tmp/pgsql.log
The main problem is I cannot change the cursor type of the SELECT statement.
When calling SQLSetStmtAttr(hstmt, SQL_ATTR_CURSOR_TYPE, (SQLPOINTER)
SQL_CURSOR_KEYSET_DRIVEN, 0); as seen in an other thread, I get a return co=
de of
SQL_SUCCESS_WITH_INFO and SQLDiagRec returns:
SQLSTATE:01S02
NATIVE CODE: 16
MESSAGE: Requested value changed.
If I call SQLGetStmtAttr(..., SQL_ATTR_CURSOR_TYPE,...); it returns
SQL_CURSOR_STATIC.
I really think this is why I cannot update or delete rows using SQLSetPos()=
but
I don't know why I cannot change the cursor type.
I have to say, I spent some hours reading this newsgroup to try finding a
solution but I am completely stuck now.
Any help would be greatly appreciated.
Thanks in advance.
Pascal
---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster