Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam panduan cepat ini, Anda menyambungkan ke basis data SQL Server dari Go dan menjalankan kueri. Anda menggunakan go-mssqldb driver dengan paket standar database/sql .
Prasyarat
Untuk sampel utama dalam artikel ini, Anda perlu:
- Go 1.25 atau versi lebih baru
- Akses ke titik akhir yang kompatibel dengan SQL Server. Sampel utama mengasumsikan instans SQL Server lokal di Windows.
- Database
AdventureWorks2025sampel. Untuk instruksi pengunduhan dan pemulihan, lihat Database sampel AdventureWorks.
Jika Anda terhubung ke Azure SQL alih-alih ke instans SQL Server lokal, gunakan Gunakan go-mssqldb dengan Azure SQL Database untuk prasyarat dan penyiapan khusus Azure.
Pilih titik awal Anda
Sampel utama dalam artikel ini menggunakan instans SQL Server lokal di Windows dengan autentikasi terintegrasi. Gunakan autentikasi SQL atau variasi Microsoft Entra ID nanti dalam artikel ini jika Anda menggunakan Linux atau macOS, atau jika Anda tersambung ke Azure SQL.
- Lanjutkan dalam artikel ini jika Anda menginginkan sampel end-to-end terkecil terhadap SQL Server dan Anda dapat membuat database pengujian lokal.
- Jika Anda terhubung dengan login SQL Server alih-alih Windows authentication, lanjutkan dalam artikel ini dan gunakan variasi autentikasi SQL nanti.
- Jika Anda tersambung ke Azure SQL Database, Azure SQL Managed Instance, atau SQL database di Fabric, mulailah dengan Gunakan go-mssqldb dengan Azure SQL Database. Artikel tersebut mencakup persyaratan TLS Azure, batas koneksi, dan autentikasi tanpa kata sandi.
- Jika Anda menggunakan Microsoft Entra ID, impor
github.com/microsoft/go-mssqldb/azureaddan gunakanazuresqlnama driver. Untuk detail alur kredensial, lihat autentikasi Microsoft Entra ID.
Membuat proyek Go
Buat dan inisialisasi direktori baru:
mkdir go-sql-quickstart cd go-sql-quickstart go mod init go-sql-quickstartInstal driver:
go get github.com/microsoft/go-mssqldb
Sambungkan dan lakukan kueri
Buat file bernama main.go dengan kode Go berikut:
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())
}
}
Jalankan aplikasi:
go run main.go
Output yang diharapkan:
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)
...
Sisipkan baris
Tambahkan fungsi berikut ke main.go dan panggil dari: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
go-mssqldb Driver tidak mendukung LastInsertId(). Saat dipanggil, akan menghasilkan error. Gunakan OUTPUT klausa atau kueri terpisah SELECT SCOPE_IDENTITY() untuk mengambil nilai identitas yang dimasukkan.
Menggunakan autentikasi SQL
Untuk menyambungkan dengan menggunakan autentikasi SQL Server alih-alih Windows authentication, ubah string koneksi. Untuk semua format dan opsi string koneksi, lihat Connection strings.
connString := "sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025"
Gunakan Microsoft Entra ID
Jika Anda tersambung ke Azure SQL Database, Azure SQL Managed Instance, atau SQL database di Fabric, mulailah dengan Gunakan go-mssqldb dengan Azure SQL Database. Contoh di bagian ini hanya menampilkan perubahan kode minimum yang diperlukan di main.go.
Untuk mengautentikasi dengan menggunakan Microsoft Entra ID, impor paket:azuread
import (
_ "github.com/microsoft/go-mssqldb/azuread"
)
Kemudian gunakan azuresql nama driver dan tambahkan fedauth ke string koneksi. Untuk semua opsi Microsoft Entra, lihat autentikasi Microsoft Entra ID.
db, err := sql.Open("azuresql", "sqlserver://<server>.database.windows.net?database=AdventureWorks2025&fedauth=ActiveDirectoryDefault&encrypt=true&TrustServerCertificate=false")