Go语言之连接数据库,并判断数据库是否成功

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Go语言之连接数据库,并判断数据库是否成功

go语言中,连接数据库方式也是非常简单的,需要引用包database/sql和驱动_ "github.com/go-sql-driver/mysql"

代码实例


日常写法:

package main
import (
  "database/sql"
  "fmt"
  _ "github.com/go-sql-driver/mysql"
)
func main() {
  //用户名密码:root\123456 
  //@tcp:已tcp连接
  //(192.168.84.152:13306):数据库ip和端口号
  //sql_demo:具体数据库
  dsn := "root:123456@tcp(192.168.84.152:13306)/sql_demo"
  //open函数只能检查格式是否正确,不正确立即中断程序
  db,err := sql.Open("mysql",dsn)
  if err != nil {
    panic(err)
  }
  //最后调用关闭连接操作
  defer db.Close()
  //判断数据库是否连接成功,可使用db中的Ping参数
  err = db.Ping()
  if err != nil {
    fmt.Printf("connect to db failed,err:%v\n",err)
  }else {
    fmt.Printf("connect to db success")
  }
}

运行程序:(模拟三种场景,连接不上数据库、连接上数据库、连接不到指定数据库)

1675235207757.jpg

项目中写法:

package main
import (
  "database/sql"
  "fmt"
  _ "github.com/go-sql-driver/mysql"
  "time"
)
var db *sql.DB
func initMySQL()(err error)  {
  dsn := "root:123456@tcp(192.168.84.133:32768)/sql_demo"
  db,err = sql.Open("mysql",dsn)
  if err != nil {
    panic(err)
  }
  err = db.Ping()
  if err != nil {
    return
  }
  db.SetMaxOpenConns(200) //最大连接数
  db.SetMaxIdleConns(10) //连接池里最大空闲连接数。必须要比maxOpenConns小
  db.SetConnMaxLifetime(time.Second*10) //最大存活保持时间
  db.SetConnMaxIdleTime(time.Second*10) //最大空闲保持时间
  return
}
func main() {
  if err := initMySQL();err !=nil{
    fmt.Printf("connect to db failed,err:%v\n",err)
  }else {
    fmt.Println("connect to db success")
  }
  defer db.Close()
}
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
10天前
|
存储 Go 索引
go语言使用for循环遍历
go语言使用for循环遍历
24 7
|
13天前
|
存储 Go
go语言 遍历映射(map)
go语言 遍历映射(map)
26 2
|
14天前
|
Go 调度 开发者
Go语言中的并发编程:深入理解goroutines和channels####
本文旨在探讨Go语言中并发编程的核心概念——goroutines和channels。通过分析它们的工作原理、使用场景以及最佳实践,帮助开发者更好地理解和运用这两种强大的工具来构建高效、可扩展的应用程序。文章还将涵盖一些常见的陷阱和解决方案,以确保在实际应用中能够避免潜在的问题。 ####
|
14天前
|
测试技术 Go 索引
go语言使用 range 关键字遍历
go语言使用 range 关键字遍历
17 3
|
13天前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
14天前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
|
14天前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(下)
本文接续前文,深入讲解了在Windows环境下使用C#和ADO.NET操作南大通用GBase 8s数据库的方法。通过Visual Studio 2022创建项目,添加GBase 8s的DLL引用,并提供了详细的C#代码示例,涵盖数据库连接、表的创建与修改、数据的增删查改等操作,旨在帮助开发者提高数据库管理效率。
|
消息中间件 Go
go连接RabbitMQ "no access to this vhost"错误
连接的失败报错:RabbitMQ Exception (403) Reason: "no access to this vhost" 因为没有配置该用户的访问权限,可以通过 rabbitmqctl add_vhost admin 来添加,并赋予权限: rabbitmqctl set_permissions -p 用户名 admin ".
7468 0
|
10天前
|
开发框架 Go 计算机视觉
纯Go语言开发人脸检测、瞳孔/眼睛定位与面部特征检测插件-助力GoFly快速开发框架
开发纯go插件的原因是因为目前 Go 生态系统中几乎所有现有的人脸检测解决方案都是纯粹绑定到一些 C/C++ 库,如 OpenCV 或 dlib,但通过 cgo 调用 C 程序会引入巨大的延迟,并在性能方面产生显著的权衡。此外,在许多情况下,在各种平台上安装 OpenCV 是很麻烦的。使用纯Go开发的插件不仅在开发时方便,在项目部署和项目维护也能省很多时间精力。
|
14天前
|
测试技术 Go 索引
go语言通过 for 循环遍历
go语言通过 for 循环遍历
24 3