go mysql use 问题,Go语言使用MySql的方法

本文实例讲述了Go语言中使用MySql的方法。分享给大家供大家参考。具体如下:

此代码需要先安装mysql的go语言驱动。

首先安装mysql的go语言驱动:

复制代码 代码如下:

go get github.com/ziutek/mymysql/godrv

示例代码如下:

复制代码 代码如下:

package users

import (

"database/sql"

"fmt"

_ "github.com/ziutek/mymysql/godrv"

)

const (

DB_NAME = "mysql_database_name"

DB_USER = "mysql_user"

DB_PASS = "mysql_password"

)

type User struct {

Id      int    `json:"id"`

Name string `json:"name"`

Alias   string `json:"alias"`

}

func OpenDB() *sql.DB {

db, err := sql.Open("mymysql", fmt.Sprintf("%s/%s/%s", DB_NAME, DB_USER, DB_PASS))

if err != nil {

panic(err)

}

return db

}

func UserById(id int) User {

db := OpenDB()

defer db.Close()

row := db.QueryRow("SELECT `id`, `name`,`alias` FROM `users` WHERE id=?", id)

user := new(User)

row.Scan(&user.Id, &user.Name, &user.Alias)

return user

}

希望本文所述对大家的Go语言程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是用 Go 语言和 MySQL 数据库实现一个简易的客户管理系统的基本步骤: 1. 安装 MySQL 数据库和 Go 语言的 MySQL 驱动程序。 2. 创建数据库和数据表,例如: ``` CREATE DATABASE customer; USE customer; CREATE TABLE IF NOT EXISTS customers ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, email VARCHAR(50) NOT NULL, phone VARCHAR(20) NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` 3. 在 Go 语言中导入 "database/sql" 和 "github.com/go-sql-driver/mysql" 包。 4. 连接到 MySQL 数据库,例如: ``` db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/customer") if err != nil { log.Fatal(err) } defer db.Close() ``` 5. 定义结构体来表示客户数据,例如: ``` type Customer struct { ID int Name string Email string Phone string } ``` 6. 实现增删改查等基本操作的函数,例如: ``` // 插入客户数据 func (c *Customer) insert(db *sql.DB) error { stmt, err := db.Prepare("INSERT INTO customers(name, email, phone) VALUES(?, ?, ?)") if err != nil { return err } defer stmt.Close() res, err := stmt.Exec(c.Name, c.Email, c.Phone) if err != nil { return err } id, err := res.LastInsertId() if err != nil { return err } c.ID = int(id) return nil } // 更新客户数据 func (c *Customer) update(db *sql.DB) error { stmt, err := db.Prepare("UPDATE customers SET name=?, email=?, phone=? WHERE id=?") if err != nil { return err } defer stmt.Close() _, err = stmt.Exec(c.Name, c.Email, c.Phone, c.ID) if err != nil { return err } return nil } // 删除客户数据 func (c *Customer) delete(db *sql.DB) error { stmt, err := db.Prepare("DELETE FROM customers WHERE id=?") if err != nil { return err } defer stmt.Close() _, err = stmt.Exec(c.ID) if err != nil { return err } return nil } // 查询客户数据 func (c *Customer) query(db *sql.DB) error { row := db.QueryRow("SELECT name, email, phone FROM customers WHERE id=?", c.ID) err := row.Scan(&c.Name, &c.Email, &c.Phone) if err != nil { return err } return nil } // 查询所有客户数据 func queryAll(db *sql.DB) ([]Customer, error) { rows, err := db.Query("SELECT id, name, email, phone FROM customers") if err != nil { return nil, err } defer rows.Close() var customers []Customer for rows.Next() { var c Customer err := rows.Scan(&c.ID, &c.Name, &c.Email, &c.Phone) if err != nil { return nil, err } customers = append(customers, c) } return customers, nil } ``` 7. 在 main 函数中测试上述函数,例如: ``` func main() { db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/customer") if err != nil { log.Fatal(err) } defer db.Close() // 插入客户数据 c1 := Customer{Name: "Alice", Email: "alice@example.com", Phone: "1234567890"} err = c1.insert(db) if err != nil { log.Fatal(err) } // 更新客户数据 c1.Email = "alice2@example.com" err = c1.update(db) if err != nil { log.Fatal(err) } // 删除客户数据 err = c1.delete(db) if err != nil { log.Fatal(err) } // 查询客户数据 c2 := Customer{ID: 2} err = c2.query(db) if err != nil { log.Fatal(err) } fmt.Println(c2) // 查询所有客户数据 customers, err := queryAll(db) if err != nil { log.Fatal(err) } fmt.Println(customers) } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值