用go来操作mysql

       先看数据库内容:

mysql> select * from user;
+----+--------+----------+
| id | strKey | strValue |
+----+--------+----------+
|  1 | xxx    | yyy      |
|  2 | xxx2   | yyy2     |
|  3 | xxx    | yyy3     |
+----+--------+----------+
3 rows in set (0.00 sec)

        用go来操作一下:

package main

import (
    "database/sql"
    "fmt"

    _ "github.com/go-sql-driver/mysql"
)

var DB *sql.DB

func init() {
    var err  error
    DB, err = sql.Open("mysql", "root@/taoge") // taoge is db name
    if err != nil {
        panic("heheda")
    }else{
        fmt.Println("Open ok")
    }
}

func get(key string) bool {
    sqlstr := "SELECT strKey, strValue FROM user where strKey = ?"
    stmt, err := DB.Prepare(sqlstr)
    defer stmt.Close()
    if err != nil {
        fmt.Println("Prepare error", err)
        return false
    }

    rows, err := stmt.Query(key)
    defer rows.Close()
    if err != nil {
        fmt.Println("Query error", err)
        return false
    }

    for rows.Next() {
        var key, val string
        err = rows.Scan(&key, &val)
        if err != nil {
            fmt.Println("Scan error", err)
            return false
        }

        fmt.Println("Result:", key, val)
    }

    return true
}

func main() {
    get("xxx")
}


        结果:

Open ok
Result: xxx yyy
Result: xxx yyy3

       

       如果是update操作, 那也简单, 无非就是用Exec而已。

       创建数据库表的话, 可以这么玩:

package main

import (
    "database/sql"
    "fmt"

    _ "github.com/go-sql-driver/mysql"
)

var DB *sql.DB

func init() {
    var err  error
    DB, err = sql.Open("mysql", "root@/taoge") // taoge is db name
    if err != nil {
    }else{
        fmt.Println("Open ok")
    }
}

func main() {
  createTable()
}

func createTable() {
  prefix := "CREATE TABLE IF NOT EXISTS "

  sqlstr := prefix + "tb_people" + "(" + `
    id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name varchar(64)  NOT NULL,
    addr varchar(64)  NOT NULL
  ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8  `

  fmt.Println(sqlstr)

  _, err := DB.Exec(sqlstr)
  if err != nil {
    fmt.Println(err)
  }
}


       自测OK.

       不多说。

 

      

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值