|
@@ -44,9 +44,6 @@ qCTKDCMTK::~qCTKDCMTK()
|
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
-QCTK_SET_CXX(qCTKDCMTK, const QString&, setDatabaseFileName, DatabaseFileName);
|
|
|
-
|
|
|
-//----------------------------------------------------------------------------
|
|
|
bool qCTKDCMTK::openDatabase(const QString& databaseFileName)
|
|
|
{
|
|
|
QCTK_D(qCTKDCMTK);
|
|
@@ -57,44 +54,55 @@ bool qCTKDCMTK::openDatabase(const QString& databaseFileName)
|
|
|
d->LastError = d->Database.lastError().text();
|
|
|
return false;
|
|
|
}
|
|
|
+ if ( d->Database.tables().empty() )
|
|
|
+ {
|
|
|
+ initializeDatabase();
|
|
|
+ }
|
|
|
return true;
|
|
|
}
|
|
|
const QString& qCTKDCMTK::GetLastError() const {
|
|
|
QCTK_D(const qCTKDCMTK);
|
|
|
return d->LastError;
|
|
|
}
|
|
|
-QSqlDatabase& qCTKDCMTK::database() {
|
|
|
- QCTK_D(qCTKDCMTK);
|
|
|
+const QSqlDatabase& qCTKDCMTK::database() const {
|
|
|
+ QCTK_D(const qCTKDCMTK);
|
|
|
return d->Database;
|
|
|
}
|
|
|
|
|
|
bool qCTKDCMTKPrivate::executeScript(const QString& script) {
|
|
|
QFile scriptFile(script);
|
|
|
- qDebug() << scriptFile.exists();
|
|
|
- qDebug() << scriptFile.size();
|
|
|
- QString sqlCommands( scriptFile.readAll() );
|
|
|
- qDebug() << sqlCommands ;
|
|
|
+ scriptFile.open(QIODevice::ReadOnly);
|
|
|
+ QString sqlCommands( QTextStream(&scriptFile).readAll() );
|
|
|
sqlCommands.replace( '\n', ' ' );
|
|
|
sqlCommands.replace("; ", ";\n");
|
|
|
+
|
|
|
QStringList sqlCommandsLines = sqlCommands.split('\n');
|
|
|
+
|
|
|
QSqlQuery query(Database);
|
|
|
+
|
|
|
for (QStringList::iterator it = sqlCommandsLines.begin(); it != sqlCommandsLines.end()-1; ++it)
|
|
|
- {
|
|
|
- query.exec(*it);
|
|
|
- if (query.lastError().type())
|
|
|
+ {
|
|
|
+ if (! (*it).startsWith("--") )
|
|
|
{
|
|
|
- std::cerr
|
|
|
- << "There was an error during execution of the statement: "
|
|
|
- << (*it).toStdString();
|
|
|
+ query.exec(*it);
|
|
|
+ if (query.lastError().type())
|
|
|
+ {
|
|
|
+ qDebug() << "There was an error during execution of the statement: " << (*it);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
}
|
|
|
- return false;
|
|
|
- }
|
|
|
+ }
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-bool qCTKDCMTK::initializeDatabase()
|
|
|
+bool qCTKDCMTK::initializeDatabase(const char* sqlFileName)
|
|
|
{
|
|
|
QCTK_D(qCTKDCMTK);
|
|
|
- return d->executeScript(":/dicom/dicom-schema.sql");
|
|
|
+ return d->executeScript(sqlFileName);
|
|
|
+}
|
|
|
+
|
|
|
+void qCTKDCMTK::closeDatabase()
|
|
|
+{
|
|
|
+ QCTK_D(qCTKDCMTK);
|
|
|
+ d->Database.close();
|
|
|
}
|
|
|
-
|