在Go中,为了访问数据库,你需要使用sql.DB
.你可使用这个类型来创建语句和事务,执行查询以及获取结果.
首先,你需要知道sql.DB
不是一个数据库连接.它也不是任何特定数据库软件中的database或schema概念的映射.它是一个抽象的接口,是一种数据库存在的形式.数据库可以是形形色色的,比如本地文件,通过网络连接的,在内存或进程中的.
sql.DB
在幕后执行着一些重要任务:
- 它通过驱动打开和关闭对实际数据库的连接.
- 它管理着一个连接池,连接可以是上面提到的多种形式.
sql.DB
被抽象成你无需关心如何去管理对数据库的并发访问.当你使用一个连接去执行任务时其会被标记成在使用状态,当它不再被使用时,则会放回到可用的连接池中.
这样会造成一种结果,如果释放连接失败,则会导致sql.DB
打开很多连接,从而导致资源失控(太多的连接,太多打开的文件的句柄,缺少可用的网络端口等).我们将在以后进一步讨论这个话题.
创建sql.DB
后,你就可使用它来查询数据库,以及创建语句和事务.