Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpDbIn 204 of 280 menu
◀ ▶

Вставка строки в Go

Новую строку пишут запросом вставки с перечислением столбцов и значений. Текст запроса держат отдельно от данных: числа и строки передают следующими аргументами, а не склеивают в одну строку на Go.

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

Создадим таблицу и вставим один товар:

package main import ( "database/sql" "fmt" "log" "os" _ "modernc.org/sqlite" ) func main() { os.Remove("shop.db") db, err := sql.Open("sqlite", "shop.db") if err != nil { log.Fatal(err) } defer db.Close() err = db.Ping() if err != nil { log.Fatal(err) } _, err = db.Exec(` CREATE TABLE goods ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, price REAL NOT NULL ) `) if err != nil { log.Fatal(err) } _, err = db.Exec( `INSERT INTO goods (title, price) VALUES (?, ?)`, "mug", 9.5, ) if err != nil { log.Fatal(err) } fmt.Println("inserted") }

На экране "inserted". В таблице одна строка: название "mug" и цена 9.5, идентификатор выставил движок сам.

Несколько строк добавляют повторным вызовом с тем же текстом запроса:

package main import ( "database/sql" "fmt" "log" "os" _ "modernc.org/sqlite" ) func main() { os.Remove("shop.db") db, err := sql.Open("sqlite", "shop.db") if err != nil { log.Fatal(err) } defer db.Close() err = db.Ping() if err != nil { log.Fatal(err) } _, err = db.Exec(` CREATE TABLE goods ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, price REAL NOT NULL ) `) if err != nil { log.Fatal(err) } items := []struct { title string price float64 }{ {"pen", 2.0}, {"book", 12.0}, } for _, it := range items { _, err = db.Exec( `INSERT INTO goods (title, price) VALUES (?, ?)`, it.title, it.price, ) if err != nil { log.Fatal(err) } } fmt.Println("two rows") }

Дана таблица:

goods: id=1 title="tea" price=5

Напишите запрос вставки второй строки "cup" с ценой 7 без указания id.

Даны значения:

title := "bag" price := 15.0

Составьте текст INSERT для orders с полями title, qty, price и количеством 2 для этих переменных.

Скажите, почему название товара нельзя вшивать в текст запроса через сложение строк на Go.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить