# #sqlite #go
Вопрос:
Я использую приведенный ниже код для добавления двух строк в таблицу
package main
import (
"database/sql"
"fmt"
"log"
"strconv"
_ "github.com/mattn/go-sqlite3"
)
func main() {
database, _ := sql.Open("sqlite3", "./nraboy.db")
statement, _ := database.Prepare("CREATE TABLE IF NOT EXISTS people (id INTEGER PRIMARY KEY, firstname TEXT, lastname TEXT)")
statement.Exec()
statement, _ = database.Prepare("INSERT INTO people (firstname, lastname) VALUES (?, ?)")
statement.Exec("Nic", "Raboy")
statement, _ = database.Prepare("INSERT INTO people (firstname, lastname) VALUES (?, ?)")
statement.Exec("Tom", "Hardy")
_, err := statement.Exec("delete from people where id = 1")
if err != nil {
log.Fatal(err)
}
rows, _ := database.Query("SELECT id, firstname, lastname FROM people")
var id int
var firstname string
var lastname string
for rows.Next() {
rows.Scan(amp;id, amp;firstname, amp;lastname)
fmt.Println(strconv.Itoa(id) ": " firstname " " lastname)
}
}
но когда я добавляю _, err := statement.Exec("delete from people where id = 1")
для удаления одну из строк, я получаю следующую ошибку:
2021/07/09 16:21:07 sql: expected 2 arguments, got 1
exit status 1
Как удалить строку в таблице ?
Ответ №1:
Похоже, вы забыли вызвать statement, _ = database.Prepare("delete from people where id = 1")
команду «Удалить». При вызове statement.Exec("delete from people where id = 1")
ранее подготовленного оператора он все еще действует и ожидает двух аргументов (имя, фамилия).