75 lines
No EOL
1.2 KiB
Markdown
75 lines
No EOL
1.2 KiB
Markdown
databases
|
|
|
|
sqlite
|
|
https://www.sqlitetutorial.net/sqlite-go/connect/
|
|
|
|
connecting
|
|
|
|
```go
|
|
|
|
func NewDB() *sql.DB {
|
|
// err := errors.New("some error")
|
|
|
|
db, err := sql.Open("sqlite", "./main.db")
|
|
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
return nil
|
|
}
|
|
fmt.Println("Connected to the SQLite database successfully.")
|
|
|
|
|
|
fmt.Println("Table countries was created successfully.")
|
|
|
|
return db
|
|
}
|
|
```
|
|
|
|
creating table
|
|
```go
|
|
func CreateTable(db *sql.DB) (sql.Result, error) {
|
|
|
|
sql := fmt.Sprintf(`CREATE TABLE IF NOT EXISTS %v(
|
|
id TEXT PRIMARY KEY,
|
|
name TEXT NOT NULL,
|
|
price REAL NOT NULL,
|
|
file TEXT
|
|
);`, TABLE_NAME)
|
|
|
|
return db.Exec(sql)
|
|
|
|
}
|
|
|
|
```
|
|
|
|
findall
|
|
|
|
```go
|
|
func FindAll(db *sql.DB) ([]types.Book, error) {
|
|
|
|
sql := fmt.Sprintf(`select * from %v`, TABLE_NAME)
|
|
|
|
rows, err := db.Query(sql)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
|
|
var books []types.Book
|
|
for rows.Next() {
|
|
b := &types.Book{}
|
|
err := rows.Scan(&b.Id, &b.Name, &b.Price, &b.Filename)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
books = append(books, *b)
|
|
}
|
|
|
|
fmt.Println("finall: ", books)
|
|
|
|
return books, nil
|
|
}
|
|
```
|
|
|
|
we cant just use sql.Rows directly as it is stream so using Next() we read it row by row |