
Originally Posted by
smyk
Should you not use port 5435 for PG compatibility mode ?
good point
So I manage to talk to the PG server with the connection string below
QString connectString
= QStringLiteral
( "Driver={PostgreSQL ANSI};"
"Database=C:/database/eventDB;"
// "Uid=sa;"
// "Pwd=sa;"
// "assumeMinServerVersion=10.0;"
// "MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE;"
"Port=5435;"
"Server=localhost;");
db.setDatabaseName(connectString);
bool ok = db.open("sa","sa");
if(!ok)
qDebug() << db.lastError();
return ok;
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
QString connectString = QStringLiteral(
"Driver={PostgreSQL ANSI};"
"Database=C:/database/eventDB;"
// "Uid=sa;"
// "Pwd=sa;"
// "assumeMinServerVersion=10.0;"
// "MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE;"
"Port=5435;"
"Server=localhost;");
db.setDatabaseName(connectString);
bool ok = db.open("sa","sa");
if(!ok)
qDebug() << db.lastError();
return ok;
To copy to clipboard, switch view to plain text mode
But the server kicked me out after some sql syntax error at connect
QSqlError("110",
"QODBC3: Unable to connect",
"ERROR: Syntax error in SQL statement \"SET EXTRA_FLOAT_DIGITS[*] = 2\"; expected \"@, AUTOCOMMIT, EXCLUSIVE, IGNORECASE, PASSWORD, SALT, MODE, COMPRESS_LOB, DATABASE, COLLATION, BINARY_COLLATION, UUID_COLLATION, CLUSTER, DATABASE_EVENT_LISTENER, ALLOW_LITERALS, DEFAULT_TABLE_TYPE, CREATE, HSQLDB.DEFAULT_TABLE_TYPE, PAGE_STORE, CACHE_TYPE, FILE_LOCK, DB_CLOSE_ON_EXIT, AUTO_SERVER, AUTO_SERVER_PORT, AUTO_RECONNECT, ASSERT, ACCESS_MODE_DATA, OPEN_NEW, JMX, PAGE_SIZE, RECOVER, NAMES, SCOPE_GENERATED_KEYS, SCHEMA, CATALOG, DATESTYLE, SEARCH_PATH, SCHEMA_SEARCH_PATH, JAVA_OBJECT_SERIALIZER, IGNORE_CATALOGS, SESSION, TRANSACTION, LOGSIZE, FOREIGN_KEY_CHECKS\"; SQL statement:\nSET extra_float_digits = 2 [42001-200]")
QSqlError("110", "QODBC3: Unable to connect", "ERROR: Syntax error in SQL statement \"SET EXTRA_FLOAT_DIGITS[*] = 2\"; expected \"@, AUTOCOMMIT, EXCLUSIVE, IGNORECASE, PASSWORD, SALT, MODE, COMPRESS_LOB, DATABASE, COLLATION, BINARY_COLLATION, UUID_COLLATION, CLUSTER, DATABASE_EVENT_LISTENER, ALLOW_LITERALS, DEFAULT_TABLE_TYPE, CREATE, HSQLDB.DEFAULT_TABLE_TYPE, PAGE_STORE, CACHE_TYPE, FILE_LOCK, DB_CLOSE_ON_EXIT, AUTO_SERVER, AUTO_SERVER_PORT, AUTO_RECONNECT, ASSERT, ACCESS_MODE_DATA, OPEN_NEW, JMX, PAGE_SIZE, RECOVER, NAMES, SCOPE_GENERATED_KEYS, SCHEMA, CATALOG, DATESTYLE, SEARCH_PATH, SCHEMA_SEARCH_PATH, JAVA_OBJECT_SERIALIZER, IGNORE_CATALOGS, SESSION, TRANSACTION, LOGSIZE, FOREIGN_KEY_CHECKS\"; SQL statement:\nSET extra_float_digits = 2 [42001-200]")
To copy to clipboard, switch view to plain text mode
attached is my version of my postgres driver.
I am still searching for I believe the last piece of the puzzle.
baray98
Added after 5 minutes:

Originally Posted by
smyk
Should you not use port 5435 for PG compatibility mode ?
good point
So I manage to talk to the PG server with the connection string below
QString connectString
= QStringLiteral
( "Driver={PostgreSQL ANSI};"
"Database=C:/database/eventDB;"
// "Uid=sa;"
// "Pwd=sa;"
// "assumeMinServerVersion=10.0;"
// "MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE;"
"Port=5435;"
"Server=localhost;");
db.setDatabaseName(connectString);
bool ok = db.open("sa","sa");
if(!ok)
qDebug() << db.lastError();
return ok;
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
QString connectString = QStringLiteral(
"Driver={PostgreSQL ANSI};"
"Database=C:/database/eventDB;"
// "Uid=sa;"
// "Pwd=sa;"
// "assumeMinServerVersion=10.0;"
// "MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE;"
"Port=5435;"
"Server=localhost;");
db.setDatabaseName(connectString);
bool ok = db.open("sa","sa");
if(!ok)
qDebug() << db.lastError();
return ok;
To copy to clipboard, switch view to plain text mode
But the server kicked me out after some sql syntax error at connect
QSqlError("110",
"QODBC3: Unable to connect",
"ERROR: Syntax error in SQL statement \"SET EXTRA_FLOAT_DIGITS[*] = 2\"; expected \"@, AUTOCOMMIT, EXCLUSIVE, IGNORECASE, PASSWORD, SALT, MODE, COMPRESS_LOB, DATABASE, COLLATION, BINARY_COLLATION, UUID_COLLATION, CLUSTER, DATABASE_EVENT_LISTENER, ALLOW_LITERALS, DEFAULT_TABLE_TYPE, CREATE, HSQLDB.DEFAULT_TABLE_TYPE, PAGE_STORE, CACHE_TYPE, FILE_LOCK, DB_CLOSE_ON_EXIT, AUTO_SERVER, AUTO_SERVER_PORT, AUTO_RECONNECT, ASSERT, ACCESS_MODE_DATA, OPEN_NEW, JMX, PAGE_SIZE, RECOVER, NAMES, SCOPE_GENERATED_KEYS, SCHEMA, CATALOG, DATESTYLE, SEARCH_PATH, SCHEMA_SEARCH_PATH, JAVA_OBJECT_SERIALIZER, IGNORE_CATALOGS, SESSION, TRANSACTION, LOGSIZE, FOREIGN_KEY_CHECKS\"; SQL statement:\nSET extra_float_digits = 2 [42001-200]")
QSqlError("110", "QODBC3: Unable to connect", "ERROR: Syntax error in SQL statement \"SET EXTRA_FLOAT_DIGITS[*] = 2\"; expected \"@, AUTOCOMMIT, EXCLUSIVE, IGNORECASE, PASSWORD, SALT, MODE, COMPRESS_LOB, DATABASE, COLLATION, BINARY_COLLATION, UUID_COLLATION, CLUSTER, DATABASE_EVENT_LISTENER, ALLOW_LITERALS, DEFAULT_TABLE_TYPE, CREATE, HSQLDB.DEFAULT_TABLE_TYPE, PAGE_STORE, CACHE_TYPE, FILE_LOCK, DB_CLOSE_ON_EXIT, AUTO_SERVER, AUTO_SERVER_PORT, AUTO_RECONNECT, ASSERT, ACCESS_MODE_DATA, OPEN_NEW, JMX, PAGE_SIZE, RECOVER, NAMES, SCOPE_GENERATED_KEYS, SCHEMA, CATALOG, DATESTYLE, SEARCH_PATH, SCHEMA_SEARCH_PATH, JAVA_OBJECT_SERIALIZER, IGNORE_CATALOGS, SESSION, TRANSACTION, LOGSIZE, FOREIGN_KEY_CHECKS\"; SQL statement:\nSET extra_float_digits = 2 [42001-200]")
To copy to clipboard, switch view to plain text mode
attached is my version of my postgres driver.
I am still searching for I believe the last piece of the puzzle.
baray98

Originally Posted by
smyk
Should you not use port 5435 for PG compatibility mode ?
good point
So I manage to talk to the PG server with the connection string below
QString connectString
= QStringLiteral
( "Driver={PostgreSQL ANSI};"
"Database=C:/database/eventDB;"
// "Uid=sa;"
// "Pwd=sa;"
// "assumeMinServerVersion=10.0;"
// "MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE;"
"Port=5435;"
"Server=localhost;");
db.setDatabaseName(connectString);
bool ok = db.open("sa","sa");
if(!ok)
qDebug() << db.lastError();
return ok;
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
QString connectString = QStringLiteral(
"Driver={PostgreSQL ANSI};"
"Database=C:/database/eventDB;"
// "Uid=sa;"
// "Pwd=sa;"
// "assumeMinServerVersion=10.0;"
// "MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE;"
"Port=5435;"
"Server=localhost;");
db.setDatabaseName(connectString);
bool ok = db.open("sa","sa");
if(!ok)
qDebug() << db.lastError();
return ok;
To copy to clipboard, switch view to plain text mode
But the server kicked me out after some sql syntax error at connect
QSqlError("110",
"QODBC3: Unable to connect",
"ERROR: Syntax error in SQL statement \"SET EXTRA_FLOAT_DIGITS[*] = 2\"; expected \"@, AUTOCOMMIT, EXCLUSIVE, IGNORECASE, PASSWORD, SALT, MODE, COMPRESS_LOB, DATABASE, COLLATION, BINARY_COLLATION, UUID_COLLATION, CLUSTER, DATABASE_EVENT_LISTENER, ALLOW_LITERALS, DEFAULT_TABLE_TYPE, CREATE, HSQLDB.DEFAULT_TABLE_TYPE, PAGE_STORE, CACHE_TYPE, FILE_LOCK, DB_CLOSE_ON_EXIT, AUTO_SERVER, AUTO_SERVER_PORT, AUTO_RECONNECT, ASSERT, ACCESS_MODE_DATA, OPEN_NEW, JMX, PAGE_SIZE, RECOVER, NAMES, SCOPE_GENERATED_KEYS, SCHEMA, CATALOG, DATESTYLE, SEARCH_PATH, SCHEMA_SEARCH_PATH, JAVA_OBJECT_SERIALIZER, IGNORE_CATALOGS, SESSION, TRANSACTION, LOGSIZE, FOREIGN_KEY_CHECKS\"; SQL statement:\nSET extra_float_digits = 2 [42001-200]")
QSqlError("110", "QODBC3: Unable to connect", "ERROR: Syntax error in SQL statement \"SET EXTRA_FLOAT_DIGITS[*] = 2\"; expected \"@, AUTOCOMMIT, EXCLUSIVE, IGNORECASE, PASSWORD, SALT, MODE, COMPRESS_LOB, DATABASE, COLLATION, BINARY_COLLATION, UUID_COLLATION, CLUSTER, DATABASE_EVENT_LISTENER, ALLOW_LITERALS, DEFAULT_TABLE_TYPE, CREATE, HSQLDB.DEFAULT_TABLE_TYPE, PAGE_STORE, CACHE_TYPE, FILE_LOCK, DB_CLOSE_ON_EXIT, AUTO_SERVER, AUTO_SERVER_PORT, AUTO_RECONNECT, ASSERT, ACCESS_MODE_DATA, OPEN_NEW, JMX, PAGE_SIZE, RECOVER, NAMES, SCOPE_GENERATED_KEYS, SCHEMA, CATALOG, DATESTYLE, SEARCH_PATH, SCHEMA_SEARCH_PATH, JAVA_OBJECT_SERIALIZER, IGNORE_CATALOGS, SESSION, TRANSACTION, LOGSIZE, FOREIGN_KEY_CHECKS\"; SQL statement:\nSET extra_float_digits = 2 [42001-200]")
To copy to clipboard, switch view to plain text mode
attached is my version of my postgres driver.
I am still searching for I believe the last piece of the puzzle.
baray98
Added after 53 minutes:
The final answer
WE can connect to H2 with QODBC using code below. QPSQL does not work but you will be using PostgresSQL ODBC driver. see code blow
QString connectString
= QStringLiteral
( "Driver={PostgreSQL Unicode(x64)};"
"Database=C:/database/eventDB;" //fullpath without extension
"Port=5435;"
"Server=localhost;");
db.setDatabaseName(connectString);
bool ok = db.open("sa","sa");
if(!ok)
qDebug() << db.lastError();
return ok;
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
QString connectString = QStringLiteral(
"Driver={PostgreSQL Unicode(x64)};"
"Database=C:/database/eventDB;" //fullpath without extension
"Port=5435;"
"Server=localhost;");
db.setDatabaseName(connectString);
bool ok = db.open("sa","sa");
if(!ok)
qDebug() << db.lastError();
return ok;
To copy to clipboard, switch view to plain text mode
- Install H2 database in your machine
- Run <yourh2dir>/bin run h2.bat but I prefer typing at the command line so you can see the output like qouted below
- Connect to database with the code qouted above.
TCP server running at tcp://192.168.200.122:9092 (only local connections)
PG server running at pg://192.168.200.122:5435 (only local connections)
Web Console server running at
http://192.168.200.122:8082 (only local connections)
Note:
PG server at H2 was not happy when i used the latest postgres driver I can only make it work with 9.05.02.00
Make sure QPSQL will connect to a postgres first to test if your QPSQL finds the dll it depended on.
H2 database need to have password ODBC will not connect to empty passworded database (i am not sure is empty passworded is a word

)
case closed. I hope this will help somebody..
baray98
Bookmarks