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() // 在函数结束时关闭数据库连接 // 执行SQL语句 rows, err := db.Query("SELECT name FROM my_table") if err != nil { panic(err.Error()) } // 关闭结果集 defer rows.Close() // 处理结果集 for rows.Next() { var name string err = rows.Scan(&name) if err != nil { panic(err.Error()) } fmt.Println(name) } // 检查错误 err = rows.Err() if err != nil { panic(err.Error()) } }
在上述示例中,大家使用了defer语句来延迟关闭数据库连接和结果集。defer语句会在函数返回时执行,无论函数是自然返回还是由于程序内部调用了panic函数而触发的返回。在这个例子中,无论查询是否成功,都会执行数据库连接和结果集的关闭操作。
在使用Go语言连接MySQL时,一定要记得关闭连接,否则会造成资源的浪费。可以使用defer语句来确保数据库连接在函数结束时被关闭。