存取關係資料庫

使用 Go,您可以將各種資料庫和資料存取方法納入應用程式中。本節中的主題說明如何使用標準函式庫的 database/sql 套件存取關係資料庫。

如需使用 Go 存取資料的入門教學,請參閱 教學:存取關係資料庫

Go 也支援其他資料存取技術,包括用於關聯式資料庫較高層級存取的 ORM 函式庫,以及非關聯式 NoSQL 資料儲存。

支援的資料庫管理系統

Go 支援所有最常見的關聯式資料庫管理系統,包括 MySQL、Oracle、Postgres、SQL Server、SQLite 等。

您可以在 SQLDrivers 頁面中找到驅動程式的完整清單。

用於執行查詢或進行資料庫變更的函式

database/sql 套件包含專門設計給您要執行的資料庫操作類型之函式。例如,雖然您可以使用 QueryQueryRow 來執行查詢,但 QueryRow 專門設計給您預期只有一個列的情況,省略傳回只包含一個列的 sql.Rows 的開銷。您可以使用 Exec 函式來使用 SQL 陳述式(例如 INSERTUPDATEDELETE)進行資料庫變更。

如需更多資訊,請參閱下列內容

交易

透過 sql.Tx,您可以撰寫程式碼來在交易中執行資料庫操作。在交易中,多個操作可以一起執行,並以最後的提交來結束,以套用所有變更為一個原子步驟,或以回滾來捨棄變更。

如需有關交易的更多資訊,請參閱 執行交易

查詢取消

當您想要取消資料庫操作時,您可以使用 context.Context,例如在客戶端連線關閉或操作執行時間比您想要的長時。

對於任何資料庫操作,您可以使用將 Context 作為引數的 database/sql 套件函式。使用 Context,您可以指定操作的逾時或截止時間。您也可以使用 Context 來透過您的應用程式將取消要求傳播給執行 SQL 陳述式的函式,確保在不再需要時釋放資源。

如需更多資訊,請參閱 取消進行中的操作

受管理的連線池

當您使用 sql.DB 資料庫處理時,您會連線到內建連線池,它會根據您的程式碼需求建立和捨棄連線。透過 sql.DB 處理是使用 Go 進行資料庫存取最常見的方式。如需詳細資訊,請參閱開啟資料庫處理

database/sql 套件會為您管理連線池。但是,對於更進階的需求,您可以設定連線池屬性,如設定連線池屬性中所述。

對於您需要單一保留連線的作業,database/sql 套件提供sql.ConnConn 特別適用於使用 sql.Tx 進行交易會是不佳選擇的情況。

例如,您的程式碼可能需要

如需詳細資訊,請參閱使用專用連線