I think you can use the following for this. I’m using a similar approach in my apps, and I have not run into any issues yet.
QSqlDatabase::addDatabase keeps the connection open If you do not explicitly close it. But in order to actually commit any transactions you have to call QSqlDatabase::open(). So If you open it in your main.cpp file, it will keep being open. Instead, you can keep only the connection open. When you are using the connection, you just get the already open database connection using QSqlDatabase::database(), then open it, and do whatever you like. After the transaction, you can simply close it. Regards, Furkan Üzümcü On Aug 21, 2018, 16:55 -0400, Israel Brewster <ibrews...@flyravn.com>, wrote: > Ok, maybe you can give me a pointer on what I'm doing wrong then. My code is > structured like the following: > > bool openDatabase(){ > QSqlDatabase db=QSqlDatabase::addDatabase('QSQLITE'); > db.setDatabaseName(<path_to_my_database_file>); > return db.open(); > } > > int main(int argc, char *argv[]) > { > QApplication a(argc, argv); > ... > <various initialization code> > ... > bool dbOpen=openDatabase(); > ... > <more initilization> > return a.exec(); > } > > And if I put a breakpoint at any point after the call to OpenDatabase, the > database is open - it does not close, even though that QSqlDatabase object > went out of scope. At no point in my application do I keep a copy of > QSqlDatabase around in any of my classes - every call to QSqlDatabase is as a > function local member, and as such goes out of scope (thereby theoretically > calling the destructor) as soon as the function exits. > > So what am I missing here? > > ----------------------------------------------- > Israel Brewster > Systems Analyst II > 5245 Airport Industrial Rd > Fairbanks, AK 99709 > (907) 450-7293 > ----------------------------------------------- > > > > > > > > > > > > > On Aug 21, 2018, at 12:31 PM, Roland Hughes <rol...@logikalsolutions.com> > > wrote: > > > > Why are you creating yet another class instead of properly structuring your > > application? > > Take a gander at > > http://www.logikalsolutions.com/wordpress/information-technology/qt-and-usb-pt-4/ > > for some ideas. You probably also want to find a copy of this book > > http://www.theminimumyouneedtoknow.com/qt_book.html > > Most importantly you need to read the fine manual. > > http://doc.qt.io/qt-5/qsqldatabase.html#dtor.QSqlDatabase > > QSqlDatabase::~QSqlDatabase() > > Destroys the object and frees any allocated resources. > > Note: When the last connection is destroyed, the destructor implicitly > > calls close() to release the database connection. > > See also close(). > > If your database is open for the life of the application then the > > application has a failed architecture. Database connections aren't supposed > > to have actual life spans. > > > > On 08/21/2018 03:08 PM, Israel Brewster wrote: > > > Ideally, what I'd have is a system where you set up the connection, and > > > then it automatically opens/closes the connection when needed (i.e. when > > > doing a SELECT, INSERT, UPDATE, etc). With my app, this would generally > > > only be for a) periodic updates or b) in direct response to user input, > > > so most of the time the connection could remain closed. To the best of my > > > knowledge (correct me if I am wrong), this is not possible with the > > > existing QSqlDatabase/ QSQLITE database driver classes. > > > > -- > > Roland Hughes, President > > Logikal Solutions > > (630) 205-1593 > > > > http://www.theminimumyouneedtoknow.com > > http://www.infiniteexposure.net > > http://www.johnsmith-book.com > > http://www.logikalblog.com > > http://www.interestingauthors.com/blog > > http://lesedi.us > > _______________________________________________ > > Interest mailing list > > Interest@qt-project.org > > http://lists.qt-project.org/mailman/listinfo/interest > > _______________________________________________ > Interest mailing list > Interest@qt-project.org > http://lists.qt-project.org/mailman/listinfo/interest
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest