猿问

恐慌:sql:预期 0 个参数,得到 1 个

我正在尝试使用 Go 执行查询,但我无法请求任何查询,因为它不断地给我同样的错误。


我已经多次更改查询,但这似乎没有帮助。另外,我还更改了 Query 中的 QueryRow,不幸的是这也没有帮助。


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 行。


天涯尽头无女友
浏览 103回答 2
2回答

红颜莎娜

该错误告诉您您正在向QueryRow它传递一个不符合预期的参数。您的 SQL 语句没有任何占位符,因此不需要任何占位符,但您给它之一id。只是改变:row := db.QueryRow(sqlStatement, id)到:row := db.QueryRow(sqlStatement)

神不在的星期二

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-column 的命名方式,您可能必须更改naam=?为idColumn=?. 
随时随地看视频慕课网APP

相关分类

Go
我要回答