Ich habe ein oder zwei Wochen lang die Grundlagen der Go-Sprache gelernt und eine einfache Webanwendung mit CRUD-Funktion erstellt. Ich konnte keinen Artikel finden, der zu einer Lösung führen würde, selbst wenn ich durch den Betrieb der Datenbank gestolpert wäre (LIKE-Klausel). Ich habe beschlossen, diesen Artikel zu schreiben.
https://qiita.com/init/items/2edfc7acf11234e5b1aa Die grundlegenden Datenbankoperationen werden im obigen Artikel beschrieben. Ich schreibe zum ersten Mal einen Qiita-Artikel, daher schreibe ich vorerst nur über die LIKE-Klausel, auf die ich gestoßen bin.
Version: go 1.15.3
db:SQLite3
PC:Mac
Installation von golang, SQLite3, go-sqlite3
package main
import (
"database/sql"
_ "github.com/mattn/go-sqlite3"
"log"
)
var DbConnection *sql.DB
type Uset struct {
Id int
Name string
Age int
}
func main() {
DbConnection, err := sql.Open("sqlite3", "../example.sql")
if err != nil {
log.Fatalln(err)
}
defer DbConnection.Close()
cmd := `CREATE TABLE IF NOT EXISTS user(id INTEGER PRIMARY KEY,
name STRING,
age INT)`
_, err = DbConnection.Exec(cmd)
if err != nil {
log.Fatalln(err)
}
}
$ sqlite3 example.sql
SQLite version 3.28.0 2019-04-15 14:49:49
Enter ".help" for usage hints.
sqlite> .table
user
sqlite>
sqlite> select * from user;
1|yamada|20
2|yamamoto|22
3|suzuki|19
4|tanaka|15
5|miyamoto|30
sqlite>
Ich habe 5 Platten gelegt. Von links ID-Alter
cmd := "SELECT * FROM user WHERE name LIKE ?"
rows, err := Dbconnection.Query(cmd, "%yamada%")
if err != nil {
log.Println(err)
}
defer rows.Close()
var users []User
for rows.Next() {
var user User
err = rows.Scan(&user.Id, &m.Name, &m.Age)
if err != nil {
log.Println(err)
}
users = append(users, user)
fmt.Println(users)
$ go run main.go
[{1 yamada 20}]
//Ergebnis go run main.go []
Ich übergebe einen Wert an das "?"
Anstatt es zuerst in "%%" einzuschließen, musste ich den Wert zusammen mit "%" wie ""% yamada% "" übergeben.
Ich habe einen Artikel über die LIKE-Klausel von Python x SQLite gefunden und als Referenz verwendet.
<br>
An Terminals etc.
sqlite> select * from user where name like '%yamada%'; 1|yamada|20
Ich kann gehen.
#### Ganzzahlen können dasselbe tun
cmd := "SELECT * FROM user WHERE age LIKE ?" rows, err := DbConnection.Query(cmd, "%1%")
//Ergebnis [{3 suzuki 19} {4 tanaka 15}]
## Andere Nutzungsmuster
#### Beim Abrufen von Datensätzen, die mit einer beliebigen Zeichenfolge beginnen
cmd := "SELECT * FROM user WHERE name LIKE ?" rows, err := DbConnection.Query(cmd, "y%")
//Ergebnis [{1 yamada 20} {2 yamamoto 22}]
#### Holen Sie sich Daten, bei denen "m" zweimal kommt
cmd := "SELECT * FROM user WHERE name LIKE ?" rows, err := DbConnection.Query(cmd, "%m%m%")
//Ergebnis [{2 yamamoto 22} {5 miyamoto 30}]
#### Daten mit Spalten beliebiger Länge abrufen (6 Zeichen im Beispiel)
cmd := "SELECT * FROM user WHERE name LIKE ?" rows, err := DbConnection.Query(cmd, "______")
//Ergebnis [{1 yamada 20} {3 suzuki 19} {4 tanaka 15}]
## Schließlich
Ich weiß nicht, ob jemand auf die gleiche Weise stolpern wird, aber ich hoffe, es hilft jemandem. (Ich wollte die Details des Codes schreiben, aber es tut mir leid, dass es lange gedauert hat, weil ich neu darin bin.)
Als ich tatsächlich eine einfache App erstellte, stellte ich fest, dass Golang nicht so informativ ist wie Rails.
In Zukunft möchte ich einen Artikel darüber schreiben, was mir beim Lernen von Golang aufgefallen ist.
Danke, dass du bis zum Ende zugesehen hast.
Recommended Posts