Go是一門流行的編程語言,在處理數(shù)據(jù)庫時(shí),我們通常需要連接到MySQL數(shù)據(jù)庫。當(dāng)一個(gè)連接不再需要時(shí),我們需要關(guān)閉它,避免資源浪費(fèi)。下面我們將介紹如何在Go語言中關(guān)閉MySQL連接。
import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/test") if err != nil { panic(err.Error()) } defer db.Close() // 在函數(shù)結(jié)束時(shí)關(guān)閉數(shù)據(jù)庫連接 // 執(zhí)行SQL語句 rows, err := db.Query("SELECT name FROM my_table") if err != nil { panic(err.Error()) } // 關(guān)閉結(jié)果集 defer rows.Close() // 處理結(jié)果集 for rows.Next() { var name string err = rows.Scan(&name) if err != nil { panic(err.Error()) } fmt.Println(name) } // 檢查錯(cuò)誤 err = rows.Err() if err != nil { panic(err.Error()) } }
在上述示例中,我們使用了defer語句來延遲關(guān)閉數(shù)據(jù)庫連接和結(jié)果集。defer語句會(huì)在函數(shù)返回時(shí)執(zhí)行,無論函數(shù)是自然返回還是由于程序內(nèi)部調(diào)用了panic函數(shù)而觸發(fā)的返回。在這個(gè)例子中,無論查詢是否成功,都會(huì)執(zhí)行數(shù)據(jù)庫連接和結(jié)果集的關(guān)閉操作。
在使用Go語言連接MySQL時(shí),一定要記得關(guān)閉連接,否則會(huì)造成資源的浪費(fèi)。可以使用defer語句來確保數(shù)據(jù)庫連接在函數(shù)結(jié)束時(shí)被關(guān)閉。