Golang操作Mysql

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

1. 說明

最原始的參數化SQL語句,ORM可以參考begoo。

2. 安裝驅動

go get github.com/go-sql-driver/mysql

3. 操作樣本

package mainimport (    "fmt"    "database/sql"    _ "github.com/go-sql-driver/mysql")type TestMysql struct {    db *sql.DB}/* 初始化資料庫引擎 */func Init() (*TestMysql, error) {    test := new(TestMysql);    db, err := sql.Open("mysql", "root:yccy@/gotest");    //第一個參數 : 資料庫引擎    //第二個參數 : 資料庫DSN配置。Go中沒有統一DSN,都是資料庫引擎自己定義的,因此不同引擎可能配置不同    if err != nil {        fmt.Println("database initialize error : ", err.Error());        return nil, err;    }    test.db = db;    return test, nil;}/* 測試資料庫資料添加 */func (test *TestMysql)Create() {    if test.db == nil {        return;    }    stmt, err := test.db.Prepare("insert into test(name,age)values(?,?)");    if err != nil {        fmt.Println(err.Error());        return;    }    defer stmt.Close();    if result, err := stmt.Exec("張三", 20); err == nil {        if id, err := result.LastInsertId(); err == nil {            fmt.Println("insert id : ", id);        }    }    if result, err := stmt.Exec("李四", 30); err == nil {        if id, err := result.LastInsertId(); err == nil {            fmt.Println("insert id : ", id);        }    }    if result, err := stmt.Exec("王五", 25); err == nil {        if id, err := result.LastInsertId(); err == nil {            fmt.Println("insert id : ", id);        }    }}/* 測試資料庫資料更新 */func (test *TestMysql)Update() {    if test.db == nil {        return;    }    stmt, err := test.db.Prepare("update test set name=?,age=? where age=?");    if err != nil {        fmt.Println(err.Error());        return;    }    defer stmt.Close();    if result, err := stmt.Exec("周七", 40, 25); err == nil {        if c, err := result.RowsAffected(); err == nil {            fmt.Println("update count : ", c);        }    }}/* 測試資料庫資料讀取 */func (test *TestMysql)Read() {    if test.db == nil {        return;    }    rows, err := test.db.Query("select id,name,age from test limit 0,5");    if err != nil {        fmt.Println(err.Error());        return;    }    defer rows.Close();    fmt.Println("");    cols, _ := rows.Columns();    for i := range cols {        fmt.Print(cols[i]);        fmt.Print("\t");    }    fmt.Println("");    var id int;    var name string;    var age int;    for rows.Next() {        if err := rows.Scan(&id, &name, &age); err == nil {            fmt.Print(id);            fmt.Print("\t");            fmt.Print(name);            fmt.Print("\t");            fmt.Print(age);            fmt.Print("\t\r\n");        }    }}/* 測試資料庫刪除 */func (test *TestMysql)Delete() {    if test.db == nil {        return;    }    stmt, err := test.db.Prepare("delete from test where age=?");    if err != nil {        fmt.Println(err.Error());        return;    }    defer stmt.Close();    if result, err := stmt.Exec(20); err == nil {        if c, err := result.RowsAffected(); err == nil {            fmt.Println("remove count : ", c);        }    }}func (test *TestMysql)Close() {    if test.db != nil {        test.db.Close();    }}func main() {    if test, err := Init(); err == nil {        test.Create();        test.Update();        test.Read();        test.Delete();        test.Read();        test.Close();    }}

參考代碼被轉載了N次,沒找到出處,部分過時內容,進行了修改。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.