паника: sql: ожидается 0 аргументов, получено 1 - PullRequest
0 голосов
/ 16 июня 2019

Я пытаюсь выполнить запросы с помощью Go, но мне не удается запросить какой-либо запрос, потому что он продолжает выдавать мне одну и ту же ошибку снова и снова.

Я несколько раз менял запрос, но, похоже, это не помогло. Также я изменил QueryRow в Query, к сожалению, это тоже не помогает.

func test123() {

    db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/vitaintellectdb")
    if err != nil {
        panic(err.Error())
    }

    id := 1
    var col string
    sqlStatement := `SELECT naam FROM medewerker WHERE naam="jansen"`
    row := db.QueryRow(sqlStatement, id)
    err2 := row.Scan(&col)
    if err2 != nil {
        if err2 == sql.ErrNoRows {
            fmt.Println("Zero rows found")
        } else {
            panic(err2)
        }
    }

}

QueryRow разработан, чтобы дать вам 1 строку взамен. К сожалению, ошибка говорит мне, что не должно быть никаких возвратов, я ожидаю 1 строку в ответ.

Ответы [ 2 ]

2 голосов
/ 16 июня 2019
sqlStatement := `SELECT naam FROM medewerker WHERE naam="jansen"`
row := db.QueryRow(sqlStatement, id)

У данного оператора sql нет параметра.Следующий оператор sql, включая заполнитель, может работать лучше.

sqlStatement := `SELECT naam FROM medewerker WHERE medewerkernummer =?`
row := db.QueryRow(sqlStatement, id)

В зависимости от того, как назван ваш id -колонка, вам может потребоваться изменить naam=? на idColumn=?.В примерах здесь вы можете найти вдохновение.

1 голос
/ 16 июня 2019

Ошибка говорит вам, что вы передаете аргумент QueryRow, что он не ожидает.

В вашем операторе SQL нет заполнителей, поэтому он не ожидается, но вы предоставляете ему один из id.Просто измените:

row := db.QueryRow(sqlStatement, id)

на:

row := db.QueryRow(sqlStatement)

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