I used sql driver plugin at
"C:\QtSDK\Desktop\Qt\4.8.1\mingw\plugins\sqldrivers", tested with "OCI+Oracle"
and "ODBC+Oracle", the performance are so different(7s and 30ms for geting
20000 record).
Oracle database server is at different host in Local Area Network.
if I use query.next(), it will retured 256 records at once.
I added code segment at following,
//======================================================// create
connection//======================================================
db = new
QSqlDatabase(QSqlDatabase::addDatabase("QOCI",conname));db->setHostName(HostName);db->setDatabaseName(DatabaseName);db->setUserName(UserName);db->setPassword(Password);db->setPort(Port);
//=====================================================// 2. get 20000 record
from remote Oracle database->// use ODBC driver plugin : need 7 seconds//
use OCI driver plugin : need 0.03 seconds//
=====================================================void function(){
QSqlQueryModel plandatamodel; FlyPlanData fpltemp;
plandatamodel.setQuery("SELECT * FROM FPL WHERE
to_char(DOF,'YYYY-MM-DD')=to_char(sysdate,'YYYY-MM-DD')",*db);
while(plandatamodel.canFetchMore()) {
plandatamodel.fetchMore(); }
for(int i=0;i<plandatamodel.rowCount();i++) {
fpltemp.id=plandatamodel.record(i).value("ID").toInt(); .......
fpltemp.xfl=plandatamodel.record(i).value("XFL").toInt();
flyplandata.append(fpltemp); }}
I really don't understand why the speed is so slow, Could you please give a
suggestion? thanks.
BR,Eric2012.10.30
From: [email protected]
To: [email protected]
Date: Mon, 29 Oct 2012 10:56:15 +0000
Subject: Re: [Interest] [Help]A big problem about accessing database using OCI
driver plugin from qt application.
Which ODBC driver are you using? (Qt or native C++ driver?) Most likely, you
are using the Qt for the Oracle and native C++ for the odbc… Qt’s system if
used improperly can add quite a bit of overhead. First, how often are you
creating your QSqlQuery’s? Next, QVariant, while as fast as most variant
system, can still be slower than raw “union based” casts that many native C++
interfaces provide.. However, make sure your calls to the SQL engine are using
the correct types and NOT relying on the qvariant conversions.. ie, don’t send
back a string to convert to an integer.. Without seeing code, its gonna be hard
to diagnose further.
Scott From: [email protected]
[mailto:[email protected]] On Behalf Of
Xiaognag Wang
Sent: Monday, October 29, 2012 10:23 AM
To: qt-interest
Subject: [Interest] [Help]A big problem about accessing database using OCI
driver plugin from qt application. Dear All, I meet a big problem need your
help:1. my evnriomnent: Win7 + Qt-SDK1.2.1 + oracle11g_home22. I compiled oci
driver plugin for accessing Oracle database from qt applicatio n.3. the problem
is: it is too slow to get data from database, for example: get 20000 records
from database will spend 7 seconds, if I use odbc instead, it will just need
about 30 ms. Does anyone have experience about this? Could you please give a
suggestion for me? Best Regards!Eric2012.10.29
_______________________________________________
Interest mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/interest
_______________________________________________
Interest mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/interest