前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang语言--【基础知识】访问数据库

Golang语言--【基础知识】访问数据库

作者头像
李海彬
发布2018-03-21 17:46:06
8500
发布2018-03-21 17:46:06
举报
文章被收录于专栏:Golang语言社区Golang语言社区

对许多Web应用程序而言,数据库都是其核心所在.

数据库几乎可以用来存储你想查询和修改的任何信息,比如用户信息、产品目录或者新闻列表等。

Go没有内置的驱动支持任何的数据库,但是Go定义了database/sql接口,用户可以基于驱动接口开发相应数据库的驱动

目前NOSQL已经成为Web开发的一个潮流,很多应用采用了NOSQL作为数据库,而不是以前的缓存..

database/sql接口

Go与PHP不同的地方是Go没有官方提供数据库驱动,而是为开发者开发数据库驱动定义了一些标准接口,开发者可以根据定义的接口来开发相应的数据库驱动,这样做有一个好处,只要按照标准接口开发的代码,以后需要迁移数据库时,不需要任何修改。

sql.Register

存在于database/sql的函数是用来注册数据库驱动的,当第三方开发者开发数据库驱动时,都会实现init函数,在init里面会调用这个Register(name string, driver driver.Driver)完成本驱动的注册。

第三方数据库驱动都是通过调用这个函数来注册自己的数据库驱动名称以及相应的driver实现。在database/sql内部通过一个map来存储用户定义的相应驱动。

通过database/sql的注册函数可以同时注册多个数据库驱动,只要不重复。

driver.Driver

Driver是一个数据库驱动的接口,他定义了一个method: Open(namestring),这个方法返回一个数据库的Conn接口。

返回的Conn只能用来进行一次goroutine的操作,也就是说不能把这个Conn应用于Go的多个goroutine里面。

driver.Conn

Conn是一个数据库连接的接口定义,他定义了一系列方法,这个Conn只能应用在一个goroutine里面,不能使用在多个goroutine里面.

driver.Stmt

Stmt是一种准备好的状态,和Conn相关联,而且只能应用于一个goroutine中,不能应用于多个goroutine。

driver.Tx

事务处理一般就两个过程,递交或者回滚。数据库驱动里面也只需要实现这两个函数就可以.

driver.Execer

是一个Conn可选择实现的接口

driver.Result

是执行Update/Insert等操作返回的结果接口定义

driver.Rows

Rows是执行查询返回的结果集接口定义

driver.RowsAffected

是一个int64的别名,但是他实现了Result接口,用来底层实现Result的表示方式

driver.Value

Value其实就是一个空接口,他可以容纳任何的数据

driver.ValueConverter

ValueConverter接口定义了如何把一个普通的值转化成driver.Value的接口

driver.Valuer

Valuer接口定义了返回一个driver.Value的方式

一个驱动只要实现了这些接口就能完成增删查改等基本操作了,剩下的就是与相应的数据库进行数据交互等细节问题了

database/sql

database/sql在database/sql/driver提供的接口基础上定义了一些更高阶的方法,用以简化数据库操作,同时内部还建议性地实现一个conn pool。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • database/sql接口
    • sql.Register
      • driver.Driver
        • driver.Conn
          • driver.Stmt
            • driver.Tx
              • driver.Execer
                • driver.Result
                  • driver.Rows
                    • driver.RowsAffected
                      • driver.Value
                        • driver.ValueConverter
                          • driver.Valuer
                          • database/sql
                          相关产品与服务
                          数据库
                          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档