Russian Qt Forum
Сентябрь 30, 2024, 02:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: получение данных из qprocess  (Прочитано 5202 раз)
pro100skif
Гость
« : Июнь 18, 2014, 18:37 »

Доброго времени суток, используя сервер mysql получаю список базу данных, затем хочу использовать в программе
при использовании QProcess::readAll в qDebug() получаю следующее:
"Database
information_schema
db1
mysql
name
name11
performance_schema
table1
test
"
мне же необходимо получить каждую строчку в QString
пытался использовать:
Код:
process.start(try1);
    process.waitForReadyRead();
    qDebug()<<process.readAll();
    while(process.readLine()!="")
    {
    QString namex=process.readLine();
    qDebug()<<"DB:"<<namex;
   
    }

    process.waitForFinished();
но столкнулся с тем, что читает оно все нормально, но кроме последней строки ее программа в упор не видит.Заранее спасибо за помощь)
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Июнь 18, 2014, 19:01 »

По идеи,
Код:
while(process.readLine()!="")
не должен сработать, после того как все и так было считано:
Код:
qDebug()<<process.readAll();
Записан

pro100skif
Гость
« Ответ #2 : Июнь 18, 2014, 20:25 »

По идеи,
Код:
while(process.readLine()!="")
не должен сработать, после того как все и так было считано:
Код:
qDebug()<<process.readAll();
да прошу прощения ошибочка вышла это я смотрел что выведет,но если убрать
Код:
qDebug()<<process.readAll();
то проблему это не меняет, последняя строка не считывается...
возможно ли как то подсчитать количество баз данных?тогда можно было б for использовать
Записан
lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« Ответ #3 : Июнь 19, 2014, 07:37 »

Может проще выполнить запрос  ?   
Код
SQL
SHOW DATABASES;
-- OR
SHOW SCHEMAS;
Записан

pro100skif
Гость
« Ответ #4 : Июнь 19, 2014, 17:09 »

Может проще выполнить запрос  ?   
Код
SQL
SHOW DATABASES;
-- OR
SHOW SCHEMAS;
я этот запрос и использую мне необходимо считать название каждой БД из консоли в QString
Записан
lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« Ответ #5 : Июнь 20, 2014, 15:08 »

я этот запрос и использую мне необходимо считать название каждой БД из консоли в QString

Я не понимаю, зачем "мне необходимо считать название каждой БД из консоли в QString"  Непонимающий
К чему использовать QProcess Непонимающий? если достаточно выполнить запрос к БД средствами QSql*.



Ну как-то так:
Код:
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setUserName("UserName");
    db.setPassword("Password");
    db.setDatabaseName("mysql");
    if (!db.open())
    {
        QSqlError err = db.lastError();
        db = QSqlDatabase();

        qDebug() << "Err: " << err.text();
    }
    else
    {
        QSqlQuery db_query(db);

        if (db_query.exec("SHOW DATABASES"))
        {
            do
            {
                for (int i = 0; i < db_query->record().count(); ++i)
                {
                    qDebug() << db_query->value(i).toString();
                }
            }
            while(db_query->next());
        }
    }
Записан

pro100skif
Гость
« Ответ #6 : Июнь 21, 2014, 18:12 »

я этот запрос и использую мне необходимо считать название каждой БД из консоли в QString

Я не понимаю, зачем "мне необходимо считать название каждой БД из консоли в QString"  Непонимающий
К чему использовать QProcess Непонимающий? если достаточно выполнить запрос к БД средствами QSql*.



Ну как-то так:
Код:
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setUserName("UserName");
    db.setPassword("Password");
    db.setDatabaseName("mysql");
    if (!db.open())
    {
        QSqlError err = db.lastError();
        db = QSqlDatabase();

        qDebug() << "Err: " << err.text();
    }
    else
    {
        QSqlQuery db_query(db);

        if (db_query.exec("SHOW DATABASES"))
        {
            do
            {
                for (int i = 0; i < db_query->record().count(); ++i)
                {
                    qDebug() << db_query->value(i).toString();
                }
            }
            while(db_query->next());
        }
    }

исправил спасибо, правда использовал не do..while а цикл с предусловием while, иначе первая строка выходит пустая.
« Последнее редактирование: Июнь 21, 2014, 18:15 от pro100skif » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.06 секунд. Запросов: 23.