Ticket #6060: sql_query.patch

File sql_query.patch, 2.6 KB (added by lpgcritter@…, 17 years ago)

SQL_QUERY patch against trunk

  • mythtv/programs/mythbackend/mainserver.h

     
    133133    void HandleSetBookmark(QStringList &tokens, PlaybackSock *pbs);
    134134    void HandleSettingQuery(QStringList &tokens, PlaybackSock *pbs);
    135135    void HandleSetSetting(QStringList &tokens, PlaybackSock *pbs);
     136    void HandleSqlQuery(QStringList &slist, PlaybackSock *pbs);
    136137    void HandleVersion(MythSocket *socket, QString version);
    137138    void HandleBackendRefresh(MythSocket *socket);
    138139    void HandleQueryLoad(PlaybackSock *pbs);
  • mythtv/programs/mythbackend/mainserver.cpp

     
    572572        else
    573573            HandleSetSetting(tokens, pbs);
    574574    }
     575    else if (command == "SQL_QUERY")
     576    {
     577        if (listline.size() != 2)
     578            VERBOSE(VB_IMPORTANT, "Bad SQL_QUERY request");
     579        else
     580            HandleSqlQuery(listline, pbs);
     581    }
    575582    else if (command == "ALLOW_SHUTDOWN")
    576583    {
    577584        if (tokens.size() != 1)
     
    36483655    return;
    36493656}
    36503657
     3658
     3659/**
     3660 * \addingroup myth_network_protocol
     3661 * \par        SQL_QUERY \e query
     3662 * The \e query parameter is the SQL query
     3663 * Returns results
     3664 */
     3665void MainServer::HandleSqlQuery(QStringList &slist, PlaybackSock *pbs)
     3666{
     3667    MythSocket *pbssock = pbs->getSocket();
     3668    QString querystr = slist[1];
     3669
     3670    MSqlQuery query(MSqlQuery::InitCon());
     3671
     3672    query.prepare(querystr);
     3673
     3674    QStringList outputlist;
     3675
     3676    if (!query.exec() || !query.isActive())
     3677    {
     3678        MythDB::DBError("HandleSqlQuery", query);
     3679        outputlist << "-1";
     3680        outputlist << query.lastError().text();
     3681    }
     3682    else
     3683    {
     3684        if (query.isSelect())
     3685        {
     3686            outputlist << QString::number(query.size());
     3687            while (query.next())
     3688            {
     3689                for (int i = 0; query.value(i).isValid(); i++)
     3690                    outputlist << query.value(i).toString();
     3691            }
     3692        }
     3693        else
     3694        {
     3695            outputlist << QString::number(query.numRowsAffected());
     3696        }
     3697    }
     3698
     3699    SendResponse(pbssock, outputlist);
     3700}
     3701
     3702
    36513703void MainServer::HandleFileTransferQuery(QStringList &slist,
    36523704                                         QStringList &commands,
    36533705                                         PlaybackSock *pbs)