Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu hızlı başlangıçta, Go'dan bir SQL Server veritabanına bağlanıp bir sorgu çalıştırıyorsunuz.
go-mssqldb sürücüsünü standart database/sql paketiyle kullanıyorsunuz.
Prerequisites
Bu makaledeki ana örnek için şunlara ihtiyacınız var:
- 1.25 veya daha sonrasına git
- SQL Server uyumlu uç noktaya erişim. Ana örnek, Windows'ta yerel bir SQL Server örneği varsayımını içerir.
- Örnek
AdventureWorks2025veritabanı. İndirme ve geri yükleme talimatları için AdventureWorks örnek veritabanlarına bakınız.
Yerel SQL Server örneği yerine Azure SQL'e bağlanıyorsanız, Azure'a özgü ön koşullar ve kurulum için Go-mssqldb ile Azure SQL Veritabanı kullanın.
Başlangıç noktanızı seçin
Bu makaledeki ana örnek, entegre kimlik doğrulama ile Windows üzerinde yerel bir SQL Server örneği kullanır. Linux veya macOS kullanıyorsanız ya da Azure SQL'e bağlanıyorsanız, bu makalenin ilerleyen bölümlerinde SQL kimlik doğrulama veya Microsoft Entra ID varyasyonlarını kullanın.
- SQL Server ile en küçük uçtan uca örnek istiyorsanız bu makalede devam edin ve yerel bir test veritabanı oluşturabilirsiniz.
- Eğer Windows authentication yerine SQL Server girişiyle bağlanıyorsanız, bu makalede devam edin ve SQL kimlik doğrulama varyasyonunu daha sonra kullanın.
- Azure SQL Veritabanı, Azure SQL Yönetilen Örneği veya Fabric'teki SQL veritabanına bağlanıyorsanız, başlamak için Azure SQL Veritabanı ile go-mssqldb kullanma bölümüne bakın. Bu makale Azure TLS gereksinimlerini, bağlantı sınırlarını ve şifresiz kimlik doğrulamayı ele alıyor.
- Microsoft Entra ID kullanıyorsanız,
github.com/microsoft/go-mssqldb/azureadöğesini içe aktarın veazuresqlsürücü adını kullanın. Kimlik bilgisi akışıyla ilgili ayrıntılar için Microsoft Entra ID kimlik doğrulamasına bakın.
Go projesi oluşturma
Yeni bir dizin oluşturun ve başlatın:
mkdir go-sql-quickstart cd go-sql-quickstart go mod init go-sql-quickstartSürücüyü yükleyin:
go get github.com/microsoft/go-mssqldb
Bağlanma ve sorgulama
Aşağıdaki Go koduyla adlandırılan bir dosya main.go oluşturun:
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())
}
}
Uygulamayı çalıştırın:
go run main.go
Beklenen çıkış:
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)
...
Bir satır ekle
Aşağıdaki fonksiyonu main.go içine ekleyin ve main() içinden çağırın:
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 sürücüsü, LastInsertId() öğesini desteklemiyor. Onu çağırmak hata veriyor. Eklenen bir kimlik değerini elde etmek için bir OUTPUT yan tümce veya ayrı bir SELECT SCOPE_IDENTITY() sorgu kullanın.
SQL kimlik doğrulamayı kullanma
Windows authentication yerine SQL Server doğrulaması kullanarak bağlantı kurmak için bağlantı dizesi'i değiştirin. Tüm bağlantı dizesi formatları ve seçenekleri için Connection strings sayfasına bakınız.
connString := "sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025"
Microsoft Entra Id kullanma
Azure SQL Veritabanı, Azure SQL Yönetilen Örneği veya Fabric'teki SQL veritabanına bağlanıyorsanız, başlamak için Azure SQL Veritabanı ile go-mssqldb kullanma bölümüne bakın. Bu bölümdeki örnek, yalnızca içinde main.gogereken minimum kod değişikliklerini gösterir.
Microsoft Entra ID kullanarak kimlik doğrulaması yapmak için azuread paketini içe aktarın:
import (
_ "github.com/microsoft/go-mssqldb/azuread"
)
Sonra azuresql sürücü adını kullan ve bağlantı dizesi'e ekleyinfedauth. Tüm Microsoft Entra seçenekleri için bkz. Microsoft Entra ID doğrulaması.
db, err := sql.Open("azuresql", "sqlserver://<server>.database.windows.net?database=AdventureWorks2025&fedauth=ActiveDirectoryDefault&encrypt=true&TrustServerCertificate=false")