Запросы в SQL

  • Автор темы Автор темы mexan
  • Дата начала Дата начала
Сообщения
202
Реакции
0
DELETE-запрос
Код:
package main

import (
    "database/sql"
    "fmt"

    _ "modernc.org/sqlite"
)

func main() {
    db, err := sql.Open("sqlite", "demo.db")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer db.Close()

    _, err = db.Exec("DELETE FROM clients WHERE id = :id", sql.Named("id", 3))
    if err != nil {
        fmt.Println(err)
        return
    }
}
Если какого-то клиента из таблицы, например, заблокировали, его можно удалить через DELETE-запрос. Для этого снова пригодится функция Exec(). Клиент с идентификатором 3 удалён из таблицы clients.

UPDATE-запрос
Код:
package main

import (
    "database/sql"
    "fmt"

    _ "modernc.org/sqlite"
)

func main() {
    db, err := sql.Open("sqlite", "demo.db")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer db.Close()

    productID := 1
    price := 700
    // обновление цены у продукта с заданным идентификатором
    // цена и идентификатор передаются через параметры запроса
    _, err = db.Exec("UPDATE products SET price = :price WHERE id = :id",
        sql.Named("price", price),
        sql.Named("id", productID))
    if err != nil {
        fmt.Println(err)
        return
    }
}
Допустим, нужно поменять цену продукта с идентификатором 1 и установить новое значение 700. Для этого нужно выполнить UPDATE-запрос. Для этого подойдёт уже знакомая функция Exec().

INSERT-запрос
Код:
package main

import (
    "database/sql"
    "fmt"

    _ "modernc.org/sqlite"
)

func main() {
    db, err := sql.Open("sqlite", "demo.db")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer db.Close()

    product := "Облачное хранилище"
    price := 300
    // название продукта и цена передаются через параметры
    res, err := db.Exec("INSERT INTO products (product, price) VALUES (:product, :price)",
        sql.Named("product", product),
        sql.Named("price", price))
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println(res.LastInsertId())
    fmt.Println(res.RowsAffected())
}
В конце через вызов функции LastInsertId() у объекта типа sql.Result получен последний добавленный идентификатор. Это значение выводится на консоль. Помните: не все БД поддерживают эту возможность, поэтому не всегда можно получить последний добавленный идентификатор таким способом.
 
Назад
Сверху