void admin::setupAction() { readSettings(); logList->setColumnWidth(0,60); logList->setColumnWidth(1,60); logList->setColumnWidth(2,40); sysList->setColumnWidth(0,120); RefTable->setColumnWidth(0,100); RefTable->setColumnWidth(1,180); RefTable->setColumnWidth(2,160); RefTable->setColumnWidth(3,60); RefTable->setColumnWidth(4,60); RefTable->setColumnWidth(5,60); customsTable->setColumnWidth(0,80); customsTable->setColumnWidth(1,190); if(settings.value("dbconf").toInt() == 0) { s = tr("\nDas Runtime-Flag 'dbconf' steht auf Null.\nDas Flag ist beschaedigt, "); s += tr("oder QtLog ist nicht initialisiert\n"); s += tr("Das Programm schaltet ab"); QMessageBox::information( this, tr("QtLog INFO"), tr(s.toAscii()), QMessageBox::Ok | QMessageBox::Default, QMessageBox::NoButton, QMessageBox::NoButton); exit(0); } else { openDatabase(); showTables(1); } if(settings.value("Val").toInt() == 1) { dirsel = 0; adifExpCb(); } else if(settings.value("Val").toInt() == 2) { dirsel = 1; adifImpCb(); } QSqlQuery query; qy = "SELECT rigtype FROM wrig"; query.exec(qy); while(query.next()) { n = 0; comboBoxRig->addItem(query.value(n++).toString()); } qy = "SELECT lid,logging FROM tlocation WHERE logging != ''"; query.exec(qy); while(query.next()) { i = 0; n = 0; i = query.value(n++).toInt(); comboBoxHome->addItem(query.value(n++).toString()); } comboBoxHome->setCurrentIndex(1); SavePathEdit->setText(settings.value("dumpPath").toString()); }
/* * main -- マイクロDBシステムのエントリポイント */ int main() { char input[MAX_INPUT]; char *token; /* ファイルモジュールの初期化 */ if (initializeFileModule() != OK) { fprintf(stderr, "Cannot initialize file module.\n"); exit(1); } /* データ定義ジュールの初期化 */ if (initializeDataDefModule() != OK) { fprintf(stderr, "Cannot initialize data definition module.\n"); exit(1); } /* データ操作ジュールの初期化 */ if (initializeDataManipModule() != OK) { fprintf(stderr, "Cannot initialize data manipulation module.\n"); exit(1); } /* ウェルカムメッセージを出力 */ printf("マイクロDBMSを起動しました。\n"); /* 1行ずつ入力を読み込みながら、処理を行う */ for (;;) { /* プロンプトの出力 */ printf("\nDDLまたはDMLを入力してください。\n"); printf("> "); /* キーボード入力を1行読み込む */ fgets(input, MAX_INPUT, stdin); /* 入力の最後の改行を取り除く */ if (strchr(input, '\n') != NULL) { *(strchr(input, '\n')) = '\0'; } /* 字句解析するために入力文字列を設定する */ setInputString(input); /* 最初のトークンを取り出す */ token = getNextToken(); /* 入力が空行だったら、ループの先頭に戻ってやり直し */ if (token == NULL) { continue; } /* 入力が"quit"だったら、ループを抜けてプログラムを終了させる */ if (strcmp(token, "quit") == 0) { printf("マイクロDBMSを終了します。\n\n"); break; } /* 最初のトークンが何かによって、呼び出す関数を決める */ if (strcmp(token, "create") == 0) { callCreateTable(); } else if (strcmp(token, "drop") == 0) { callDropTable(); } else if (strcmp(token, "insert") == 0) { callInsertRecord(); } else if (strcmp(token, "select") == 0) { callSelectRecord(); } else if (strcmp(token, "delete") == 0) { callDeleteRecord(); } else if (strcmp(token, "show") == 0){ showTables(); } else if (strcmp(token, "test1") == 0){ test1(); } else { /* 入力に間違いがあった */ printf("入力に間違いがあります。:%s\n", token); printf("もう一度入力し直してください。\n\n"); } } /* 各モジュールの終了処理 */ finalizeDataManipModule(); finalizeDataDefModule(); finalizeFileModule(); }
// ----------------------------- void admin::setupAction() { readSettings(); logList->setColumnWidth(0,60); // Log_name logList->setColumnWidth(1,60); // Einträge logList->setColumnWidth(2,40); // Rel sysList->setColumnWidth(0,120); RefTable->setColumnWidth(0,100); // sys.Name RefTable->setColumnWidth(1,100); // User.Name RefTable->setColumnWidth(2,100); // User_en RefTable->setColumnWidth(3,135); // Adif.Name //RefTable->setColumnWidth(4,60); //RefTable->setColumnWidth(5,60); customsTable->setColumnWidth(0,80); customsTable->setColumnWidth(1,190); if(settings.value("dbconf").toInt() == 0) { // liegt ein Fehler vor ? s = tr("\nDas Runtime-Flag 'dbconf' steht auf Null.\nDas Flag ist beschaedigt, "); s += tr("oder QtLog ist nicht initialisiert\n"); s += tr("Das Programm schaltet ab"); QMessageBox::information( this, tr("QtLog INFO"), tr(s.toAscii()), QMessageBox::Ok | QMessageBox::Default, QMessageBox::NoButton, QMessageBox::NoButton); exit(0); // Abbruch } else { openDatabase(); // normaler db_connect showTables(1); // Log + SysTabellen zeigen } if(settings.value("Val").toInt() == 1) { // ADIF_Export dirsel = 0; // dirselector auf Pfad stellen adifExpCb(); } else if(settings.value("Val").toInt() == 2) { // ADIF_Import dirsel = 1; // dirselector auf Datei waehlen stellen adifImpCb(); } QSqlQuery query; qy = "SELECT rigtype FROM wrig"; query.exec(qy); while(query.next()) { n = 0; comboBoxRig->addItem(query.value(n++).toString()); } qy = "SELECT lid,logging FROM tlocation WHERE logging != ''"; query.exec(qy); while(query.next()) { i = 0; n = 0; i = query.value(n++).toInt(); // id comboBoxHome->addItem(query.value(n++).toString()); // logging_text } comboBoxHome->setCurrentIndex(1); SavePathEdit->setText(settings.value("dumpPath").toString()); }
void admin::dbRestore() { int i; QString p; QFile file; i = 0; QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); QString pathToMysql=""; #ifdef Q_WS_WIN pathToMysql=settings.value("mySQLPath","").toString(); #endif if(checkBoxDb->isChecked() == TRUE ) { p += SavePathEdit->text()+"backup-db.sql"; if(!file.exists(p)) { QApplication::restoreOverrideCursor(); QMessageBox::information( this, tr("INFO"), tr("\nRESTORE nicht moeglich - Datei nicht vorhanden !"), QMessageBox::Ok); return; } QSqlQuery query; qy = "DROP DATABASE IF EXISTS "+settings.value("dbname").toString(); query.exec(qy); qy = "CREATE DATABASE logdb"; query.exec(qy); qy = "USE logdb"; query.exec(qy); s = pathToMysql + "mysql -u"+settings.value("dbuser").toString()+" -p"+settings.value("dbpasswd").toString(); s += " "+ settings.value("dbname").toString()+" < "; s += p; StartProcess(s.toAscii()); i = 1; } else { if( lItem) { p = SavePathEdit->text()+"backup-"+lItem->text(0)+".sql"; if(!file.exists(p)) { QApplication::restoreOverrideCursor(); QMessageBox::information( this, tr("INFO"), tr("\nRESTORE nicht moeglich - Datei nicht vorhanden !"), QMessageBox::Ok); return; } s = pathToMysql + "mysql -u"+settings.value("dbuser").toString()+" -p"+settings.value("dbpasswd").toString()+" "+settings.value("dbname").toString()+" < "; s+= p; StartProcess(s.toAscii()); QSqlQuery query; qy = "SELECT COUNT(*) FROM "+lItem->text(0); query.exec(qy); query.next(); s = query.value(0).toString(); qy = "UPDATE dblogs SET qsocnt='"+s+"' WHERE logname='"+lItem->text(0)+"'"; query.exec(qy); i = 0; } else if( sItem ) { p = SavePathEdit->text()+"backup-"+sItem->text(0)+".sql"; if(!file.exists(p)) { QApplication::restoreOverrideCursor(); QMessageBox::information( this, tr("INFO"), tr("\nRESTORE nicht moeglich - Datei nicht vorhanden !"), QMessageBox::Ok); return; } s = pathToMysql + "mysql -u"+settings.value("dbuser").toString()+" -p"+settings.value("dbpasswd").toString()+" "+settings.value("dbname").toString()+" < "; s += p; StartProcess(s.toAscii()); i = 0; } else { QApplication::restoreOverrideCursor(); QMessageBox::information( this, tr("INFO"), tr("\nErst eine Tabelle im Logbook- oder QtLog-Ordner waehlen"), QMessageBox::Ok); return; } } logList->clear(); sysList->clear(); showTables(i); QApplication::restoreOverrideCursor(); }
// ====================================================================== // RESTORE database kompl. oder eine einzelne Tabelle // -------------------------------------------------------- void admin::dbRestore() { int i; QString p; QFile file; i = 0; QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); QString pathToMysql=""; #ifdef Q_WS_WIN pathToMysql=settings.value("mySQLPath","").toString(); #endif if(checkBoxDb->isChecked() == TRUE ) { // gesetzt, RESTORE alle Tabellen p += SavePathEdit->text()+"backup-db.sql"; if(!file.exists(p)) { QApplication::restoreOverrideCursor(); QMessageBox::information( this, tr("INFO"), tr("\nRESTORE nicht moeglich - Datei nicht vorhanden !"), QMessageBox::Ok); return; } QSqlQuery query; // hier müsste noch pathToMysql rein ! ? qy = "DROP DATABASE IF EXISTS "+settings.value("dbname").toString(); query.exec(qy); // auch hier müsste noch pathToMysql rein ! ? qy = "CREATE DATABASE logdb"; query.exec(qy); qy = "USE logdb"; query.exec(qy); // Windows: dbuser hinzugefuegt, sollte unter Linux auch gehen s = pathToMysql + "mysql -u"+settings.value("dbuser").toString()+" -p"+settings.value("dbpasswd").toString(); s += " "+ settings.value("dbname").toString()+" < "; s += p; StartProcess(s.toAscii()); i = 1; } else { // RESTORE eine log_Tabelle if( lItem) { p = SavePathEdit->text()+"backup-"+lItem->text(0)+".sql"; if(!file.exists(p)) { QApplication::restoreOverrideCursor(); QMessageBox::information( this, tr("INFO"), tr("\nRESTORE nicht moeglich - Datei nicht vorhanden !"), QMessageBox::Ok); return; } // fun, funqsl, funom, funawd, funcard, fundx, wawdlist s = pathToMysql + "mysql -u"+settings.value("dbuser").toString()+" -p"+settings.value("dbpasswd").toString()+" "+settings.value("dbname").toString()+" < "; s+= p; StartProcess(s.toAscii()); QSqlQuery query; qy = "SELECT COUNT(*) FROM "+lItem->text(0); query.exec(qy); query.next(); s = query.value(0).toString(); qy = "UPDATE dblogs SET qsocnt='"+s+"' WHERE logname='"+lItem->text(0)+"'"; query.exec(qy); i = 0; } else if( sItem ) { // eine system_tabelle p = SavePathEdit->text()+"backup-"+sItem->text(0)+".sql"; if(!file.exists(p)) { QApplication::restoreOverrideCursor(); QMessageBox::information( this, tr("INFO"), tr("\nRESTORE nicht moeglich - Datei nicht vorhanden !"), QMessageBox::Ok); return; } s = pathToMysql + "mysql -u"+settings.value("dbuser").toString()+" -p"+settings.value("dbpasswd").toString()+" "+settings.value("dbname").toString()+" < "; s += p; StartProcess(s.toAscii()); i = 0; } else { QApplication::restoreOverrideCursor(); QMessageBox::information( this, tr("INFO"), tr("\nErst eine Tabelle im Logbook- oder QtLog-Ordner waehlen"), QMessageBox::Ok); return; } } logList->clear(); sysList->clear(); showTables(i); // Ergebnis in logList und sysList anzeigen. QApplication::restoreOverrideCursor(); }