要在Go中访问数据库,可以使用sql.DB
。使用此类型来创建语句和事务,执行查询和获取结果。
你应该知道的第一件事是sql.DB
不是数据库连接。它也没有映射到任何特定数据库软件的“数据库”或“模式”的概念。它是数据库接口和存在的抽象,可能与本地文件一样多样,可通过网络连接访问,或者内存中和进程中。
在sql.DB
为您执行一些重要的任务幕后:
- 它通过驱动程序打开和关闭与实际底层数据库的连接。
- 它根据需要管理一个连接池,这可能是上面提到的各种各样的事情。
将sql.DB
抽象的设计,让你不用担心如何管理到底层数据存储的并发访问。当您使用它来执行任务时,连接被标记为正在使用中,然后在不再使用时返回到可用池。这样做的一个结果是,如果您无法将连接释放回池中,那么可能会导致db.SQL
打开大量连接,可能会耗尽资源(连接太多,打开的文件句柄过多,缺少可用的网络端口等)。
创建完成后sql.DB
,您可以使用它来查询它所代表的数据库,以及创建语句和事务。