go get -u github.com/go-sql-driver/mysql
2,使用mysql驅動
func open(drivername, datasourcename string) (*db, error)
open開啟乙個dirvername指定的資料庫,datasourcename指定資料來源,一般包至少括資料庫檔名和(可能的)連線資訊。
dsn := "root:1993xtay701@tcp(127.0.0.1:3306)/test"
db,err = sql.open("mysql",dsn)
4,初始化連線
)// 定義乙個全域性物件db
var db *sql.db
// 定義乙個初始化資料庫的函式
func initdb() (err error)
// 嘗試與資料庫建立連線(校驗dsn是否正確)
err = db.ping()
if err != nil
return nil
}func main()
}
type user struct
func queryrowdemo()
fmt.printf("id:%d name:%s age:%dn", u.id, u.name, u.age)
}
單行查詢db.queryrow()
執行一次查詢,並期望返回最多一行結果(即row)。queryrow總是返回非nil的值,直到返回值的scan方法被呼叫時,才會返回被延遲的錯誤。(如:未找到結果)
6,多條查詢
// 查詢多條資料示例
func querymultirowdemo()
defer rows.close()
// 迴圈讀取結果集中的資料
for rows.next()
fmt.printf("id:%d name:%s age:%dn", u.id, u.name, u.age)
}}
多行查詢db.query()
執行一次查詢,返回多行結果(即rows),一般用於執行select命令。引數args表示query中的佔位引數。
7,插入資料
// 插入資料
func insertrowdemo()
theid, err := ret.lastinsertid() // 新插入資料的id
if err != nil
fmt.printf("insert success, the id is %d.n", theid)
}
插入、更新和刪除操作都使用方法。
func (db *db) exec(query string, args ...inte***ce{}) (result, error)
exec執行一次命令(包括查詢、刪除、更新、插入等),返回的result是對已執行的sql命令的總結。引數args表示query中的佔位引數。
8,更新資料
// 更新資料
func updaterowdemo()
n, err := ret.rowsaffected() // 操作影響的行數
if err != nil
fmt.printf("update success, affected rows:%dn", n)
}
9,刪除資料
// 刪除資料
func deleterowdemo()
n, err := ret.rowsaffected() // 操作影響的行數
if err != nil
fmt.printf("delete success, affected rows:%dn", n)
}
Mybatis插入insert操作返回自增主鍵值
在資料庫設計中,通常主鍵都使用無意義的自增主鍵id。在插入資料後,有時候還需要進行修改操作。所以,insert之後,直接返回生成的主鍵id是有必要的。mybatis註解方式,返回主鍵值方法。給對應的insert函式加上org.apache.ibatis.annotations.options註解 這...
mysql 插入返回主鍵 併發問題
現象 當業務涉及主從訂單表時,主表主鍵orderid為自增列,這時在涉及新增操作時,往往會出現如下的程式設計思路 insert order values select identity 程式中再接收返回的值,作為orderdetail表中orderid的值,做insert操作 問題 單使用者沒有問題...
mybitas插入返回主鍵
id adduser parametertype bean.user usegeneratedkeys true keyproperty id insert into user name email password values insert usegeneratedkeys 取值範圍true f...