int Query::singleSelect( QString SQLString, QString &string ){ if(isConnect()<0) return ERROR_OPEN_DB; lastError = ""; string = ""; QSqlQuery query(db); //база открывается без проблем if(!query.exec(SQLString)) //ошибка возникает здесь { lastError = query.lastError().text(); return ERROR; } int count=0; while (query.next()) { string = query.value(0).toString(); count++; } if(count>1) { lastError = tr("Ошибка! Множественное вхождение элемента!"); return ERROR_COUNT; } if(string=="") return ERROR; return ERROR_NO;}
archive = new ArchiveAPI("QMYSQL", "Archive");//конструктор по умлочаниюArchiveAPI::ArchiveAPI( QString typeConnection, //тип соединения QString nameConnection //имя соединения ){ lastError = ""; this->nameConnection = nameConnection; sqlDBArchive = new Query(typeConnection, nameConnection);}ArchiveAPI::~ArchiveAPI(){ QSqlDatabase::removeDatabase(nameConnection);}//Создает соединение с БД//возвращает код ошибокint ArchiveAPI::createConnection( QString serverName, //имя сервера QString dataBaseName, //имя БД QString userName, //имя пользователя QString Password //пароль ){ sqlDBArchive->createConnection(serverName, dataBaseName, userName, Password); return sqlDBArchive->isConnect();}int ArchiveAPI::getAbonent(QString &abonent){ SQLString = "SELECT * from arch_abonents where id = 1"; int err = sqlDBArchive->singleSelect(SQLString, abonent); if(err<0) return err; return ERROR_NO;}Query::Query( QString typeConnection, QString nameConnection ){ lastError = ""; this->nameConnection = nameConnection; this->typeConnection = typeConnection; QSqlDatabase::addDatabase(typeConnection, nameConnection);}int Query::createConnection( QString serverName, QString dataBaseName, QString userName, QString Password ){ lastError = ""; QString SQLString = ""; QSqlDatabase db = QSqlDatabase::database(nameConnection); if(typeConnection == "QODBC") { SQLString = "DRIVER={SQL Server};Server="+ serverName + ";APP=Enterprise Suite;DATABASE="+ dataBaseName +";Network=DBMSSOCN"; db.setDatabaseName(SQLString); } else { db.setHostName(serverName); db.setDatabaseName(dataBaseName); //dbArchive.setUserName("Kalinin"); //dbArchive.setPassword("123"); } if(!db.open(userName, Password)) { lastError = db.lastError().text() + " " + SQLString; return ERROR_OPEN_DB; } if(!isConnect()) { lastError = db.lastError().text() + " " + SQLString; return ERROR_OPEN_DB; } return ERROR_NO;}int Query::isConnect(){ QSqlDatabase db = QSqlDatabase::database(nameConnection); lastError = ""; if (!db.isOpen()) { lastError = tr("Cоедиенение ")+ nameConnection + tr(" не открыто!"); return ERROR_OPEN_DB; } return ERROR_NO;}int Query::singleSelect( QString SQLString, QString &string ){ if(isConnect()<0) return ERROR_OPEN_DB; QSqlDatabase db = QSqlDatabase::database(nameConnection); lastError = ""; string = ""; QSqlQuery query(db); if(!query.exec(SQLString)) //if(err==false) { lastError = query.lastError().text(); return ERROR; } int count=0; while (query.next()) { string = query.value(0).toString(); count++; //doSomething(string); } if(count>1) { lastError = tr("Ошибка! Множественное вхождение элемента!"); return ERROR_COUNT; } if(string=="") return ERROR; return ERROR_NO;}