Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto rychlém startu se připojíte k databázi SQL Server z Go a spusťujete dotaz. Používáte ovladač go-mssqldb se standardním balíčkem database/sql.
Prerequisites
Pro hlavní ukázku v tomto článku potřebujete:
- Jděte na verzi 1.25 nebo později
- Přístup k endpointu kompatibilnímu se SQL Server. Hlavní vzor předpokládá lokální instanci SQL Server na Windows.
- Ukázková
AdventureWorks2025databáze. Pro pokyny ke stažení a obnovení viz ukázkové databáze AdventureWorks.
Pokud se připojujete k Azure SQL místo lokální instance SQL Server, použijte Use go-mssqldb s Azure SQL Database pro specifické požadavky a nastavení pro Azure.
Výběr výchozího bodu
Hlavní ukázka v tomto článku používá lokální instanci SQL Server na Windows s integrovanou autentizací. Použijte varianty SQL autentizace nebo Microsoft Entra ID později v tomto článku, pokud jste na Linuxu nebo macOS, nebo pokud se připojujete k Azure SQL.
- Pokračujte tímto článkem, pokud chcete co nejmenší end-to-end ukázku pro SQL Server a můžete vytvořit místní testovací databázi.
- Pokud se připojujete přes přihlášení přes SQL Server místo Windows authentication, pokračujte v tomto článku a později použijte variantu SQL autentizace.
- Pokud se připojujete k Azure SQL Database, Azure SQL Managed Instance nebo SQL databázi ve Fabric, začněte s Use go-mssqldb with Azure SQL Database. Tento článek se zabývá požadavky Azure TLS, limity připojení a autentizaci bez hesla.
- Pokud používáte Microsoft Entra ID, importujte
github.com/microsoft/go-mssqldb/azureada použijte název ovladačeazuresql. Pro podrobnosti o toku přihlašovacích údajů viz Microsoft Entra ID authentication.
Vytvoření projektu Go
Vytvořte a inicializujte nový adresář:
mkdir go-sql-quickstart cd go-sql-quickstart go mod init go-sql-quickstartNainstalujte ovladač:
go get github.com/microsoft/go-mssqldb
Připojení a dotazování
Vytvořte soubor pojmenovaný main.go následujícím kódem Go:
package main
import (
"context"
"database/sql"
"fmt"
"log"
_ "github.com/microsoft/go-mssqldb"
)
func main() {
// Build the connection string.
connString := "sqlserver://<server>?database=AdventureWorks2025&trusted_connection=yes"
// Open and verify the connection.
db, err := sql.Open("sqlserver", connString)
if err != nil {
log.Fatal("Error opening connection: ", err.Error())
}
defer db.Close()
if err = db.PingContext(context.Background()); err != nil {
log.Fatal("Error pinging database: ", err.Error())
}
fmt.Println("Connected to SQL Server.")
// Run a SELECT query.
rows, err := db.QueryContext(context.Background(),
"SELECT DepartmentID, Name, GroupName FROM HumanResources.Department")
if err != nil {
log.Fatal("Error running query: ", err.Error())
}
defer rows.Close()
// Iterate through the results.
fmt.Println("\nDepartments:")
for rows.Next() {
var id int
var name, groupName string
if err := rows.Scan(&id, &name, &groupName); err != nil {
log.Fatal("Error scanning row: ", err.Error())
}
fmt.Printf(" %d: %s (%s)\n", id, name, groupName)
}
if err = rows.Err(); err != nil {
log.Fatal("Error after row iteration: ", err.Error())
}
}
Spusťte aplikaci:
go run main.go
Očekávaný výstup:
Connected to SQL Server.
Departments:
1: Engineering (Research and Development)
2: Tool Design (Research and Development)
3: Sales (Sales and Marketing)
4: Marketing (Sales and Marketing)
...
Vložte řádek
Přidejte následující funkci do main.go a zavolejte ji z main():
func insertDepartment(db *sql.DB, name, groupName string) (int64, error) {
ctx := context.Background()
result, err := db.ExecContext(ctx,
"INSERT INTO HumanResources.Department (Name, GroupName) VALUES (@p1, @p2)",
sql.Named("p1", name),
sql.Named("p2", groupName))
if err != nil {
return 0, err
}
return result.RowsAffected()
}
Important
Ovladač go-mssqldb nepodporuje LastInsertId(). Zavolání vrátí chybu. Použijte klauzuli OUTPUT nebo samostatný SELECT SCOPE_IDENTITY() dotaz k získání vložené hodnoty identity.
Použití ověřování SQL
Chcete-li se připojit pomocí ověřování serveru SQL Server místo ověřování systému Windows, změňte připojovací řetězec. Pro všechny formáty a možnosti připojovací řetězec viz Connection strings.
connString := "sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025"
Použijte Microsoft Entra ID
Pokud se připojujete k Azure SQL Database, Azure SQL Managed Instance nebo SQL databázi ve Fabric, začněte s Use go-mssqldb with Azure SQL Database. Příklad v této sekci ukazuje pouze minimální změny kódu požadované v main.go.
Pro autentizaci pomocí Microsoft Entra ID importujte azuread balíček:
import (
_ "github.com/microsoft/go-mssqldb/azuread"
)
Pak použijte název ovladače azuresql a přidejte fedauth ho do připojovací řetězec. Pro všechny možnosti Microsoft Entra viz Microsoft Entra ID autentizace.
db, err := sql.Open("azuresql", "sqlserver://<server>.database.windows.net?database=AdventureWorks2025&fedauth=ActiveDirectoryDefault&encrypt=true&TrustServerCertificate=false")