Supported databases include MySQL, MariaDB, PostgreSQL, Sqlite3.
go get github.com/zhgo/db
CREATE TABLE `table1` (
`UserID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`CreationTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`BirthYear` year(4) NOT NULL,
`Gender` enum('Secret','Male','Female') NOT NULL DEFAULT 'Secret',
`Nickname` varchar(16) NOT NULL,
PRIMARY KEY (`UserID`)
) ENGINE=InnoDB AUTO_INCREMENT=1000000 DEFAULT CHARSET=utf8;
The example use MySQL as default database instance.
import (
"github.com/zhgo/db"
)
s := db.Connect("mysql", "root:@tcp(127.0.0.1:3306)/zhgo?charset=utf8")
mysql is sql driver type, mysql, postgresql, sqlite. root:@tcp(127.0.0.1:3306)/zhgo?charset=utf8 is DSN.
// INSERT INTO table1(BirthYear, Gender, Nickname) VALUES(1980, 'Male', 'Bob')
r, err := s.InsertInto("table1").Fields("BirthYear", "Gender", "Nickname").Values(1980, "Male", "Bob").Exec()
Values() method can be called multiple times to insert multiple rows.
Or:
// INSERT INTO table1(BirthYear, Gender, Nickname) VALUES(1980, 'Male', 'Bob')
d = db.Item{"BirthYear": 1980, "Gender": "Male", "Nickname": "Bob"}
r, err := s.InsertInto("table1").Exec(d)
d is a map type.
// UPDATE table1 SET BirthYear = 1982, Gender = 'Female', Nickname = 'Bob' WHERE UserID = 1000000
q := s.NewQuery()
q.Update("table1")
q.Set("BirthYear", 1982)
q.Set("Gender", "Female")
q.Set("Nickname", "Bob")
r, err := q.Where(q.Eq("UserID", 1000000)).Exec()
Set() method can be called multiple times to update multiple fields.
Or:
// UPDATE table1 SET BirthYear = 1988, Gender = 'Male', Nickname = 'C语言' WHERE UserID = 1000001
d = db.Item{"BirthYear": 1988, "Gender": "Male", "Nickname": "C语言"}
w = db.Where{"UserID": 1000001}
r, err := s.Update("table1").Exec(d, w)
// DELETE FROM table1 WHERE UserID = 1000000
q := s.NewQuery()
r, err := q.DeleteFrom("table1").Where(q.Eq("UserID", 1000000)).Exec()
Or:
// DELETE FROM table1 WHERE UserID = 1000001
w := db.Where{"UserID": 1000001}
r, err := s.DeleteFrom("table1").Exec(w)
// SELECT * FROM table1 WHERE UserID = 1000001
d := []db.Item{}
q := s.NewQuery()
err := q.Select("*").From("table1").Where(q.Eq("UserID", 1000000)).Rows(&d)
Or:
// SELECT * FROM table1 WHERE UserID = 1000001
d = make(db.Item)
w = db.Where{"UserID": 1000001}
err := s.Select("*").From("table1").Row(&d, w)
Copyright 2015 The zhgo Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.