Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Parameter Count Mismatch
Forum Updated to NodeBB v4.3 + New Features

Parameter Count Mismatch

Scheduled Pinned Locked Moved Solved General and Desktop
19 Posts 5 Posters 1.9k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Aromakc

    @KroMignon I have created a database connection login.h

    QSqlDatabase mydb; // default connection
    void connClose(){
    mydb.close();
    mydb.removeDatabase(QSqlDatabase::defaultConnection); //closing db and removing any connection
    }
    bool connOpen()
    {
    QSqlDatabase mydb=QSqlDatabase::addDatabase("QSQLITE");
    mydb.setDatabaseName("D:\Retailhub\Retailhub\items.db");
    if(!mydb.open()){
    qDebug()<<("Failed to locate database!");
    return false;
    }
    else {
    qDebug()<<("Connected..."); // qDebug("Connected");
    return true;
    }
    }
    i have liked login.h in another createaccount.h and coded
    Login conn;

    I think there is no problem creating two tables in databasename.db

    KroMignonK Offline
    KroMignonK Offline
    KroMignon
    wrote on last edited by
    #8

    @Aromakc Please logout QSqlQuery::executedQuery() which is the real SQL statement which has been executed.

    It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

    1 Reply Last reply
    2
    • A Aromakc

      @KroMignon I have created a database connection login.h

      QSqlDatabase mydb; // default connection
      void connClose(){
      mydb.close();
      mydb.removeDatabase(QSqlDatabase::defaultConnection); //closing db and removing any connection
      }
      bool connOpen()
      {
      QSqlDatabase mydb=QSqlDatabase::addDatabase("QSQLITE");
      mydb.setDatabaseName("D:\Retailhub\Retailhub\items.db");
      if(!mydb.open()){
      qDebug()<<("Failed to locate database!");
      return false;
      }
      else {
      qDebug()<<("Connected..."); // qDebug("Connected");
      return true;
      }
      }
      i have liked login.h in another createaccount.h and coded
      Login conn;

      I think there is no problem creating two tables in databasename.db

      jsulmJ Offline
      jsulmJ Offline
      jsulm
      Lifetime Qt Champion
      wrote on last edited by
      #9

      @Aromakc I was actually talking about https://doc.qt.io/qt-5/qsqlquery.html#executedQuery NOT lastQuery...

      https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      1
      • A Aromakc

        @KroMignon I have created a database connection login.h

        QSqlDatabase mydb; // default connection
        void connClose(){
        mydb.close();
        mydb.removeDatabase(QSqlDatabase::defaultConnection); //closing db and removing any connection
        }
        bool connOpen()
        {
        QSqlDatabase mydb=QSqlDatabase::addDatabase("QSQLITE");
        mydb.setDatabaseName("D:\Retailhub\Retailhub\items.db");
        if(!mydb.open()){
        qDebug()<<("Failed to locate database!");
        return false;
        }
        else {
        qDebug()<<("Connected..."); // qDebug("Connected");
        return true;
        }
        }
        i have liked login.h in another createaccount.h and coded
        Login conn;

        I think there is no problem creating two tables in databasename.db

        JonBJ Offline
        JonBJ Offline
        JonB
        wrote on last edited by JonB
        #10

        @Aromakc said in Parameter Count Mismatch:
        These may not be relevant to your current issue, but:

        mydb.setDatabaseName("D:\Retailhub\Retailhub\items.db");

        As pasted here, this is not at all right! I assume you have \\ in your actual code, but it shows as \ here since you did not put it inside code tags when pasting?

        qint64 phone;
        phone=ui->line_phone->text().toInt();
        all being string except Phone_Number

        This is a bad idea. A phone number is a string of digit characters, not a number/integer.

        it shows parameter count mismatch

        You should copy & paste the exact error message you receive, in case that gives us a clue.

        How do we know your Users table has exactly 6 columns?

        Also, looking at your screenshot, what are those "duplicate connection name" warnings about? Your code should be running without any such warnings.

        1 Reply Last reply
        3
        • jsulmJ jsulm

          @Aromakc Print out https://doc.qt.io/qt-5/qsqlquery.html#executedQuery after executing the query to see how the actual query looks like.
          Also, you use different casing in the column list: is this a mistake?
          (username,password,Name,Gender,Address,Phone_Number)

          A Offline
          A Offline
          Aromakc
          wrote on last edited by
          #11

          @jsulm
          I coded qDebug()<<query.executedQuery(); it shows
          "INSERT into Users (username,password,Name,Gender,Address,Phone_Number) VALUES(:a,:bb,:bc,:bd,:be,:bf)"

          J.HilkJ 1 Reply Last reply
          0
          • A Aromakc

            @jsulm
            I coded qDebug()<<query.executedQuery(); it shows
            "INSERT into Users (username,password,Name,Gender,Address,Phone_Number) VALUES(:a,:bb,:bc,:bd,:be,:bf)"

            J.HilkJ Offline
            J.HilkJ Offline
            J.Hilk
            Moderators
            wrote on last edited by
            #12

            @Aromakc
            Ok, try to clean up your query, you're mixing lowercase and capital keywords and don't terminate with a ;

            query.prepare("INSERT INTO Users (username, password, Name, Gender, Address, Phone_Number) VALUES(?, ?, ?, ?, ? ,?);");


            Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


            Q: What's that?
            A: It's blue light.
            Q: What does it do?
            A: It turns blue.

            1 Reply Last reply
            1
            • JonBJ Offline
              JonBJ Offline
              JonB
              wrote on last edited by
              #13

              I have posted above questions like "How do we know your Users table has exactly 6 columns?`, but no response.

              So my last comment is I would try

              SELECT  username, password, Name, Gender, Address, Phone_Number from Users
              

              Up to @Aromakc whether he bothers...

              A JonBJ 2 Replies Last reply
              1
              • JonBJ JonB

                I have posted above questions like "How do we know your Users table has exactly 6 columns?`, but no response.

                So my last comment is I would try

                SELECT  username, password, Name, Gender, Address, Phone_Number from Users
                

                Up to @Aromakc whether he bothers...

                A Offline
                A Offline
                Aromakc
                wrote on last edited by Aromakc
                #14

                @JonB Here is screenshot of my db and i have changed phone to string to see if it is the problem. Did you mean this or sth else?
                I fixed those duplicate connection name. It was left there as I was testing my database connectivity.
                Screenshot (48).png

                KroMignonK 1 Reply Last reply
                0
                • JonBJ JonB

                  I have posted above questions like "How do we know your Users table has exactly 6 columns?`, but no response.

                  So my last comment is I would try

                  SELECT  username, password, Name, Gender, Address, Phone_Number from Users
                  

                  Up to @Aromakc whether he bothers...

                  JonBJ Offline
                  JonBJ Offline
                  JonB
                  wrote on last edited by JonB
                  #15

                  @Aromakc
                  I never suggested the phone number type would be the cause of your issue. But I am pleased you have altered its type off numeric.

                  @JonB said in Parameter Count Mismatch:

                  SELECT username, password, Name, Gender, Address, Phone_Number from Users

                  I suggested you try the above from your Qt program (query.exec()). This may help us identify where your INSERT problem comes from.

                  A 1 Reply Last reply
                  0
                  • A Aromakc

                    @JonB Here is screenshot of my db and i have changed phone to string to see if it is the problem. Did you mean this or sth else?
                    I fixed those duplicate connection name. It was left there as I was testing my database connectivity.
                    Screenshot (48).png

                    KroMignonK Offline
                    KroMignonK Offline
                    KroMignon
                    wrote on last edited by
                    #16

                    @Aromakc As @JonB already asked you: have you fixed the sqlite db filepath?

                    mydb.setDatabaseName("D:\Retailhub\Retailhub\items.db"); // Bad escape sequence
                    mydb.setDatabaseName("D:/Retailhub/Retailhub/items.db"); // correct
                    mydb.setDatabaseName("D:\\Retailhub\\Retailhub\\items.db"); // also correct
                    

                    It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

                    JonBJ A 2 Replies Last reply
                    3
                    • KroMignonK KroMignon

                      @Aromakc As @JonB already asked you: have you fixed the sqlite db filepath?

                      mydb.setDatabaseName("D:\Retailhub\Retailhub\items.db"); // Bad escape sequence
                      mydb.setDatabaseName("D:/Retailhub/Retailhub/items.db"); // correct
                      mydb.setDatabaseName("D:\\Retailhub\\Retailhub\\items.db"); // also correct
                      
                      JonBJ Offline
                      JonBJ Offline
                      JonB
                      wrote on last edited by
                      #17

                      @KroMignon
                      I don't think this is the OP's situation (else he'd get other errors). I tested, and if you type \\ into a post here without code tagging, it comes out as \ when displayed. Which I'm sure is the situation for his case.

                      1 Reply Last reply
                      0
                      • KroMignonK KroMignon

                        @Aromakc As @JonB already asked you: have you fixed the sqlite db filepath?

                        mydb.setDatabaseName("D:\Retailhub\Retailhub\items.db"); // Bad escape sequence
                        mydb.setDatabaseName("D:/Retailhub/Retailhub/items.db"); // correct
                        mydb.setDatabaseName("D:\\Retailhub\\Retailhub\\items.db"); // also correct
                        
                        A Offline
                        A Offline
                        Aromakc
                        wrote on last edited by Aromakc
                        #18

                        @KroMignon Yes. Thats not the problem. / and (backslash) both works. I will try to manage connection problem creating new project and update here.

                        1 Reply Last reply
                        0
                        • JonBJ JonB

                          @Aromakc
                          I never suggested the phone number type would be the cause of your issue. But I am pleased you have altered its type off numeric.

                          @JonB said in Parameter Count Mismatch:

                          SELECT username, password, Name, Gender, Address, Phone_Number from Users

                          I suggested you try the above from your Qt program (query.exec()). This may help us identify where your INSERT problem comes from.

                          A Offline
                          A Offline
                          Aromakc
                          wrote on last edited by
                          #19

                          @JonB
                          I have created "Users" table after creating "Inventory" table in items.db from Sqlite Studio. Using another database manager software I could see Both Tables in items.db but
                          if(query.exec(Select username........ from Users)) showed Users is unavailable.
                          I used sqlite3 from terminal and it showed Error: No such Tables: Users
                          So I deleted Users from Sqlite Studio and entered new Users table from terminal and it Worked.

                          (I will look more into Sqlite Studio as changes made into Inventory form the same app worked.)

                          Thank you and other contributors.

                          1 Reply Last reply
                          0

                          • Login

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • Users
                          • Groups
                          • Search
                          • Get Qt Extensions
                          • Unsolved