Ошибка: данные таблицы имеют 1 столбец, но передано 3 значения. Невозможно выполнить оператор - PullRequest
0 голосов
/ 13 мая 2019

Я тестирую эту простую программу базы данных, используя проект QML:

Window {
    visible: true
    width: 640; height: 480
    title: qsTr("SQL Example")
    property var db
    property int ident: 0

    TextField {
        id: field
        placeholderText: qsTr("Enter Your Name")
        hoverEnabled: true
    }

    Button {
        text: "Next"
        anchors.top: field.bottom
        onClicked: storeData(field.displayText)
    }

    Component.onCompleted: initDatabase()

    function initDatabase() {
        db = LocalStorage.openDatabaseSync("data", "1.0", "Save names", 1000000)
        db.transaction( function(tx)
        { tx.executeSql('CREATE TABLE IF NOT EXISTS data (id INTEGER, name TEXT, mode TEXT)') })
    }

    function storeData(username) {
        db.transaction( function(tx) {
            tx.executeSql('INSERT INTO data VALUES (?, ?, ?)', [ident, username, ""])
            ident++ })
    }
}

Когда я нажимаю кнопку Next, после ввода имени появляется следующее сообщение об ошибке:

qrc: /main.qml: 36: Ошибка: данные таблицы имеют 1 столбец, но передано 3 значения Невозможно выполнить оператор

Казалось бы, все правильно, но я не знаю, почему я получаю эту ошибку!

1 Ответ

0 голосов
/ 14 мая 2019

Ваш запрос.

INSERT INTO data VALUES (?, ?, ?)

Запрос, который следует использовать как лучший метод

INSERT INTO data (col1, col2, col3) VALUES (?, ?, ?)

Замечание

Проверьте, присутствует ли таблица в базе данных. Это может быть причиной того, что оператор создания таблицы не выполняется с определением трех столбцов. Если это так, удалите таблицу и выполните код, он будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...