Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben a gyorsindításban csatlakozol egy SQL Server adatbázishoz a Go-ból, és lefuttatsz egy lekérdezést. A go-mssqldb drivert a standard database/sql csomaggal használod.
Prerequisites
A cikk fő mintájához a következőkre van szükséged:
- Menj 1,25-ös vagy tovább
- Hozzáférés egy SQL Server-kompatibilis végponthoz. A fő példa egy helyi SQL Server példányt feltételez Windows-on.
- A
AdventureWorks2025mintaadatbázis. A letöltési és visszaállítási utasításokért lásd: AdventureWorks mintaadatbázisok.
Ha Azure SQL-hez csatlakozol a helyi SQL Server helyett, használd a go-mssqldb funkciót Azure SQL Database-val az Azure-specifikus előfeltételekhez és beállításokhoz.
Válassza ki a kiindulási pontot
A cikk fő mintája egy helyi SQL Server példányt használ Windows-on integrált hitelesítéssel. Használd az SQL hitelesítést vagy a Microsoft Entra ID változatait ebben a cikkben későbbi részben, ha Linuxon vagy macOS-en vagy, vagy ha Azure SQL-hez csatlakozol.
- Folytasd ezt a cikket, ha a legkisebb végpont-végpont mintát szeretnéd az SQL Server ellen, és létrehozhatsz egy helyi tesztadatbázist.
- Ha SQL Server bejelentkezéssel csatlakozol Windows authentication helyett, folytasd ezt a cikket, és később használd az SQL hitelesítési változatot.
- Ha Azure SQL Database-hoz, Azure SQL Managed Instance-hoz vagy SQL database-hez csatlakozol Fabric-ben, kezdd a Go-mssqldb with Azure SQL Database használatával. Ez a cikk az Azure TLS követelményeit, a kapcsolati korlátokat és a jelszó nélküli hitelesítést tárgyalja.
- Ha Microsoft Entra ID-t használsz, importálj
github.com/microsoft/go-mssqldb/azureadés használd azazuresqlillesztőprogram nevét. A hitelesítőadat-folyamat részleteiért lásd: Microsoft Entra ID hitelesítés.
Go-projekt létrehozása
Hozz létre és inicializálj egy új könyvtárat:
mkdir go-sql-quickstart cd go-sql-quickstart go mod init go-sql-quickstartTelepítsd a drivert:
go get github.com/microsoft/go-mssqldb
Csatlakozás és lekérdezés
Hozz létre egy fájlt a következő Go kóddal:main.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())
}
}
Futtassa az alkalmazást:
go run main.go
Várt kimenet:
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)
...
Sor behelyezése
Add hozzá a következő függvényt a main.go-hoz, és hívd meg a main()-ból:
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
A go-mssqldb illesztőprogram nem támogatja a LastInsertId() elemet. A meghívása hibát jelez. Használj egy OUTPUT záradékot vagy külön SELECT SCOPE_IDENTITY() lekérdezést egy beillesztett identitásérték lekérésére.
SQL-hitelesítés használata
Ha SQL Server hitelesítéssel csatlakozz Windows authentication helyett, módosítsd a kapcsolati karakterlánc-et. Minden kapcsolati karakterlánc formátumért és opcióért lásd: Connection strings.
connString := "sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025"
A Microsoft Entra-azonosító használata
Ha Azure SQL Database-hoz, Azure SQL Managed Instance-hoz vagy SQL database-hez csatlakozol Fabric-ben, kezdd a Go-mssqldb with Azure SQL Database használatával. A példa ebben a szakaszban csak a minimális kódváltoztatásokat mutatja be.main.go
Hitelesítéshez a Microsoft Entra ID használatával importáljuk a azuread csomagot:
import (
_ "github.com/microsoft/go-mssqldb/azuread"
)
Ezután használd a azuresql driver nevet, és add fedauth hozzá a kapcsolati karakterlánc-hez. Minden Microsoft Entra opcióért lásd: Microsoft Entra ID hitelesítés.
db, err := sql.Open("azuresql", "sqlserver://<server>.database.windows.net?database=AdventureWorks2025&fedauth=ActiveDirectoryDefault&encrypt=true&TrustServerCertificate=false")