Go语言实现连接MySql基础操作(go语言连接mysql数据库)
在 Go 中,可以使用 database/sql 包来连接和操作 MySQL 数据库。以下是一个简单的示例程序,它演示了如何连接 MySQL 数据库并执行查询操作:
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// 连接数据库
db, err := sql.Open("mysql", "user:password@tcp(hostname:port)/database")
if err != nil {
panic(err.Error())
}
defer db.Close()
// 查询数据
rows, err := db.Query("SELECT * FROM users WHERE age > ?", 18)
if err != nil {
panic(err.Error())
}
defer rows.Close()
// 处理查询结果
for rows.Next() {
var id int
var name string
var age int
if err := rows.Scan(&id, &name, &age); err != nil {
panic(err.Error())
}
fmt.Printf("id: %d, name: %s, age: %d\n", id, name, age)
}
if err := rows.Err(); err != nil {
panic(err.Error())
}
}
在这个示例中,我们首先使用 sql.Open 函数连接 MySQL 数据库。该函数接受两个参数:MySQL 数据库的连接信息和驱动名称。连接信息包括用户名、密码、主机名、端口号和数据库名称。在这个示例中,我们使用 go-sql-driver/mysql 驱动来连接 MySQL 数据库。
然后,我们使用 db.Query 函数执行查询操作。该函数接受两个参数:查询语句和查询参数。在这个示例中,我们查询了名为 users 的表中所有年龄大于 18 岁的用户。
最后,我们使用 rows.Next 函数遍历查询结果,并使用 rows.Scan 函数将每行数据解析为 Go 中的变量。注意,我们需要在处理完查询结果后调用 rows.Err 函数来检查是否有任何错误发生。
需要注意的是,在实际应用中,需要正确处理连接池、事务和错误处理等问题。
以下是一个简单的示例程序,它演示了如何连接 MySQL 数据库并执行增删改操作:
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// 连接数据库
db, err := sql.Open("mysql", "user:password@tcp(hostname:port)/database")
if err != nil {
panic(err.Error())
}
defer db.Close()
// 插入数据
result, err := db.Exec("INSERT INTO users (name, age) VALUES (?, ?)", "Alice", 20)
if err != nil {
panic(err.Error())
}
fmt.Println("Rows affected:", result.RowsAffected())
// 更新数据
result, err = db.Exec("UPDATE users SET age = ? WHERE name = ?", 21, "Alice")
if err != nil {
panic(err.Error())
}
fmt.Println("Rows affected:", result.RowsAffected())
// 删除数据
result, err = db.Exec("DELETE FROM users WHERE age > ?", 18)
if err != nil {
panic(err.Error())
}
fmt.Println("Rows affected:", result.RowsAffected())
}
在这个示例中,我们首先使用 sql.Open 函数连接 MySQL 数据库。然后,我们使用 db.Exec 函数执行 SQL 语句来进行增删改操作。
对于插入操作,我们使用 INSERT INTO 语句,并使用 ? 占位符来代替实际的值。db.Exec 函数返回一个 sql.Result 类型的结果,其中包含有关操作结果的信息,例如受影响的行数。
对于更新操作,我们使用 UPDATE 语句,并指定要更新的列和条件。在这个示例中,我们将名为 Alice 的用户的年龄更新为 21。
对于删除操作,我们使用 DELETE FROM 语句,并指定要删除的表和条件。在这个示例中,我们删除了所有年龄大于 18 岁的用户。
需要注意的是,在实际应用中,需要正确处理连接池、事务和错误处理等问题。同时,我们也可以使用 db.Prepare 函数来预处理 SQL 语句,以提高性能和安全性。
相关文章
- Shell中针对字符串的切片,截取,替换,删除,大小写操作
- Python学不会来打我(8)字符串string类型深度解析
- TS类型体操,看懂你就能玩转TS了_ts l
- 你只会用 split?试试 StringTokenizer,性能可以快 4 倍
- 2025-08-22:最短匹配子字符串。用go语言,给定两个字符串 s 和 p,
- case when语句增加_case when加条件
- 一次完整的HTTP请求与响应涉及了哪些知识?
- Excel超链接点击无反应及安全提示问题
- Java 判断对象是否所有属性为空,大家觉得这样写可以吗?
- Spring事物(@transactional注解)在什么情况下会失效,为什么?