通过go-mssqldb进行golang SQL Server查询
要通过 go-mssqldb
库在 Golang 中连接到 SQL Server 并进行查询,可以按照以下步骤操作。这个库提供了对 SQL Server 的连接和查询功能。
步骤
安装依赖包: 使用
go get
安装go-mssqldb
包。shgo get github.com/denisenkom/go-mssqldb
导入必要的包: 在你的 Go 文件中导入
database/sql
和go-mssqldb
包。建立数据库连接: 使用
sql.Open
函数建立到 SQL Server 的连接。执行查询: 使用
db.Query
或db.QueryRow
来执行 SQL 查询。处理查询结果: 使用
rows.Scan
方法来获取查询结果。
示例代码
以下是一个详细的示例代码,展示如何在 Golang 中使用 go-mssqldb
连接到 SQL Server 并执行查询。
gopackage main
import (
"database/sql"
"fmt"
"log"
_ "github.com/denisenkom/go-mssqldb"
)
func main() {
// 配置数据库连接字符串
server := "localhost"
port := 1433
user := "yourusername"
password := "yourpassword"
database := "yourdatabase"
connString := fmt.Sprintf("server=%s;port=%d;user id=%s;password=%s;database=%s",
server, port, user, password, database)
// 建立数据库连接
db, err := sql.Open("sqlserver", connString)
if err != nil {
log.Fatal("Error creating connection pool: ", err.Error())
}
defer db.Close()
// 确认连接是否成功
err = db.Ping()
if err != nil {
log.Fatal("Error pinging database: ", err.Error())
}
fmt.Println("Connected to the database!")
// 执行查询
query := "SELECT id, name FROM yourtable"
rows, err := db.Query(query)
if err != nil {
log.Fatal("Error executing query: ", err.Error())
}
defer rows.Close()
// 处理查询结果
for rows.Next() {
var id int
var name string
err := rows.Scan(&id, &name)
if err != nil {
log.Fatal("Error scanning row: ", err.Error())
}
fmt.Printf("ID: %d, Name: %s\n", id, name)
}
// 检查查询过程中是否发生错误
if err := rows.Err(); err != nil {
log.Fatal("Error during rows iteration: ", err.Error())
}
}
代码解析
导入包:
goimport ( "database/sql" "fmt" "log" _ "github.com/denisenkom/go-mssqldb" )
配置数据库连接字符串: 使用格式化字符串构造连接字符串。
goconnString := fmt.Sprintf("server=%s;port=%d;user id=%s;password=%s;database=%s", server, port, user, password, database)
建立数据库连接:
godb, err := sql.Open("sqlserver", connString) if err != nil { log.Fatal("Error creating connection pool: ", err.Error()) } defer db.Close()
确认连接是否成功:
goerr = db.Ping() if err != nil { log.Fatal("Error pinging database: ", err.Error()) } fmt.Println("Connected to the database!")
执行查询并处理结果:
goquery := "SELECT id, name FROM yourtable" rows, err := db.Query(query) if err != nil { log.Fatal("Error executing query: ", err.Error()) } defer rows.Close() for rows.Next() { var id int var name string err := rows.Scan(&id, &name) if err != nil { log.Fatal("Error scanning row: ", err.Error()) } fmt.Printf("ID: %d, Name: %s\n", id, name) } if err := rows.Err(); err != nil { log.Fatal("Error during rows iteration: ", err.Error()) }
这个示例展示了如何在 Golang 中使用 go-mssqldb
库连接到 SQL Server,执行查询并处理结果。根据需要替换示例中的数据库连接参数和查询语句即可应用于实际项目。