Преобразувайте въведен низ от linedit() в int за използване като целочислена променлива

Създадох прост GUI за проверка на свързаността на базата данни. Параметрите за връзка с DB, като име на DB, име на хост, потребителско име, парола, порт и т.н., ще бъдат въведени от GUI и изходът ще бъде ЧЕРВЕНО или ЗЕЛЕНО изображение в зависимост от свързаността.

Настроих oracle OCI плъгин (DB е oracle 10g)

и направи следното--

void MainWindow::on_GoButton_clicked()
{
    QString HostN = ui->HostNameEdit->text();
    QString DatabaseN = ui->DatabaseNameEdit->text();
    QString UserN = ui->UserNameEdit->text();
    QString PassWD = ui->PasswordEdit->text();
    QString PortNO = ui->PortEdit->text();

QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");

db.setHostName(HostN);
db.setDatabaseName(DatabaseN);
db.setUserName(UserN);
db.setPassword(PassWD);
db.setPort(PortNO);

while(true)
{
    if (db.open())
    {
        // do this
    }
    else
    {
        //do that
    }
}

}

Сега показва грешка-- /home/aj/MY_QT_WORK/DB_connection_test/mainwindow.cpp:19: грешка: няма съответстваща функция за извикване на „QSqlDatabase::setPort(QString&)“

Някакви идеи ???


person RicoRicochet    schedule 04.12.2014    source източник


Отговори (1)


Можете да го напишете като:

db.setPort(PortNO.toInt());

За по-голяма коректност обаче трябва да сте сигурни, че низът PortNO наистина може да се конвертира в цяло число. Следователно можете да използвате флаг, който ще покаже успешното преобразуване:

bool ok;
int portNumber = PortNO.toInt(&ok);

if (!ok) {
    qDebug() << "The port number is incorrect";
    // return?
}
person vahancho    schedule 04.12.2014