Go开发轻松操作MSSQL数据库

介绍

Microsoft SQL Server(简称MSSQL)数据库是一种关系型数据库管理系统,由Microsoft公司开发。Go语言是一种类型安全的编译型语言,旨在以系统级编程为目的,与MSSQL数据库结合使用可以发挥出更大的作用。本文将介绍如何使用Go语言轻松操作MSSQL数据库。

安装mssql驱动

在使用Go语言连接到MSSQL数据库之前,需要安装相应的驱动 - mssql驱动。

可以使用以下命令安装mssql驱动:

go get github.com/denisenkom/go-mssqldb

安装成功后,可以根据以下代码连接到MSSQL数据库:

package main

import (

"database/sql"

"fmt"

"log"

_ "github.com/denisenkom/go-mssqldb"

)

func main() {

server := "localhost"

port := 1433

user := "sa"

password := "your_password"

database := "your_database_name"

connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d;database=%s;",

server, user, password, port, database)

db, err := sql.Open("mssql", connString)

if err != nil {

log.Fatal("Open connection failed:", err.Error())

}

defer db.Close()

err = db.Ping()

if err != nil {

log.Fatal("Ping failed:", err.Error())

}

fmt.Println("Database Connected!")

}

要连接到特定的MSSQL实例,需要设置连接字符串中的服务器地址,用户名和密码,端口和数据库名称。

上面的示例演示了如何打开与MSSQL数据库的连接并关闭它。

执行SQL查询

查询单个行

下面的示例演示如何查询单个行:

query := "SELECT FirstName, LastName FROM dbo.Person WHERE PersonId = @id"

var firstName, lastName string

personId := 1

err = db.QueryRow(query, sql.Named("id", personId)).Scan(&firstName, &lastName)

if err != nil {

log.Fatal(err)

}

fmt.Printf("Name: %s %s\n", firstName, lastName)

在上面的代码中,我们使用QueryRow函数和命名参数从Person表中检索指定的人的第一个和最后一个名称。

注意:MSSQL数据库中的查询参数必须使用命名参数语法(例如:@id)。

查询多行

下面的示例演示如何查询多行:

query := "SELECT FirstName, LastName FROM dbo.Person ORDER BY LastName"

rows, err := db.Query(query)

if err != nil {

log.Fatal(err)

}

defer rows.Close()

var firstName, lastName string

for rows.Next() {

err := rows.Scan(&firstName, &lastName)

if err != nil {

log.Fatal(err)

}

fmt.Printf("Name: %s %s\n", firstName, lastName)

}

if err := rows.Err(); err != nil {

log.Fatal(err)

}

在上面的代码中,我们使用Query函数查询Person表中的所有人,并对结果进行迭代。

插入和更新数据

插入数据

下面的示例演示如何向Person表中插入新行:

query := "INSERT INTO dbo.Person (FirstName, LastName) VALUES (@firstName, @lastName); SELECT SCOPE_IDENTITY()"

firstName := "Alex"

lastName := "Smith"

var id int64

err = db.QueryRow(query,

sql.Named("firstName", firstName),

sql.Named("lastName", lastName),

).Scan(&id)

if err != nil {

log.Fatal(err)

}

fmt.Printf("Inserted ID: %d\n", id)

在上面的代码中,我们使用QueryRow函数执行INSERT语句,并将新行的标识符返回到id变量中。

注意:插入数据时,必须使用SCOPE_IDENTITY函数获取新行的标识符。

更新数据

下面的示例演示如何更新Person表中的行:

query := "UPDATE dbo.Person SET LastName = @newLastName WHERE PersonId = @personId"

personId := 1

newLastName := "Johnson"

result, err := db.Exec(query,

sql.Named("newLastName", newLastName),

sql.Named("personId", personId),

)

if err != nil {

log.Fatal(err)

}

affected, err := result.RowsAffected()

if err != nil {

log.Fatal(err)

}

fmt.Printf("Rows affected: %d\n", affected)

在上面的代码中,我们使用Exec函数执行UPDATE语句,并将更新的行数返回到affected变量中。

删除数据

下面的示例演示如何从Person表中删除行:

query := "DELETE FROM dbo.Person WHERE PersonId = @personId"

personId := 1

result, err := db.Exec(query, sql.Named("personId", personId))

if err != nil {

log.Fatal(err)

}

affected, err := result.RowsAffected()

if err != nil {

log.Fatal(err)

}

fmt.Printf("Rows affected: %d\n", affected)

在上面的代码中,我们使用Exec函数执行DELETE语句,并将删除的行数返回到affected变量中。

总结

MSSQL是一种常用的关系型数据库,Go语言是一种快速且容易上手的编程语言。结合使用这两项技术,您可以轻松创建强大的应用程序。本文介绍了如何连接到MSSQL数据库并执行各种类型的查询和操作。希望这篇文章能够帮助您开始使用Go语言轻松操作MSSQL数据库。

数据库标签