Golang 访问Mysql数据库实现增删改查

    数据库访问需要用到标准库database/sql和mysql的驱动"github.com/go-sql-driver/mysql"。这两个包都需要引用。mysql的驱动因为只是需要它的init()初始化,所以需要采用下划线的方式。

import (
    "database/sql"
    _"github.com/go-sql-driver/mysql"
    "fmt"
    "log"
)

   在访问数据库前,我们先在MySql里建好表并预先插入一些数据以便测试程序。请在Mysql里执行下面的SQL脚本。

 

 

-- ----------------------------
-- Table structure for announcement
-- ----------------------------
DROP TABLE IF EXISTS `announcement`;
CREATE TABLE `announcement` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `imgUrl` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL,
  `detailUrl` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL,
  `createDate` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
  `state` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

-- ----------------------------
-- Records of announcement
-- ----------------------------
INSERT INTO `announcement` VALUES ('1', '/visitshop/img/ann/ann1.jpg', null, '2016-07-20', '0');
INSERT INTO `announcement` VALUES ('2', '/visitshop//img/ann/ann1.jpg', null, '2016-07-20', '0');
INSERT INTO `announcement` VALUES ('3', '/visitshop//img/ann/ann1.jpg', null, '2016-07-20', '0');
INSERT INTO `announcement` VALUES ('4', '/visitshop//img/ann/ann1.jpg', null, '2016-07-20', '0');

   我们将在主函数里调用增删该查函数。先预设这四种操作的函数名

query()    //查询
query2()  //查询
insert()    //插入
update()  //修改
remove()  //删除

    然后分别实现这几个函数。
 

 

查询

   首先是query()查询函数。

   要想访问数据库,首先要打开数据库链接。这就需要用到database/sql Open函数。

 

db, err := sql.Open("mysql", "root:@/shopvisit")

   我们的数据库链接是这个样子的。为了简化操作,我的数据库用户 root 是没有密码的。而正常的数据库链接应该是这个样子的

 

 

db, err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/shopvisit")

   这个连接说明数据库用户root的密码是123456,使用tcp协议,数据库ip地址是127.0.0.1,使用3306端口作为通讯端口。当前使用的库名是shopvisit。

 

   当然链接数据库的方式其实是有好几种的

user@unix(/path/to/socket)/dbname?charset=utf8
user:password@tcp(localhost:5555)/dbname?charset=utf8
user:password@/dbname
user:password@tcp([de:ad:be:ef::ca:fe]:80)/dbname

   既然有了数据库连接的语句,就要有错误检查。而错误检查会比较频繁的出现,所以写一个函数来直接处理它。

func check(err error) {
    if err != nil{
        fmt.Println(err)
        panic(err)
    }
}

    这样每当需要对错误进程检查的时候,就执行check(err)。

 

   当db链接数据库正常之后,我们就可以执行sql查询语句了。

rows, err := db.Query("SELECT * FROM shop
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值