Mssql

Aşağıda Golang ilə MSSQL (Microsoft SQL Server) verilənlər bazasında necə işləmək barədə təcrübəmi paylaşacağam. Addım-addım izah edəcəyəm ki, MSSQL serverinə necə qoşulursunuz, CRUD (yaratma, oxuma, yeniləmə, silmə) əməliyyatlarını necə yerinə yetirirsiniz, həmçinin hazırlanan ifadələr və transaction idarəetməsini necə tətbiq edirsiniz.


1. Başlamazdan Əvvəl: Tələblər və Quraşdırma

Nə Lazımdır:

  • MSSQL Serveri: İşlək bir Microsoft SQL Server (lokal və ya uzaq server).

  • MSSQL Go Driver: denisenkom/go-mssqldb paketini istifadə edəcəyik.

Quraşdırma:

Terminalınızda aşağıdakı əmri işə salın:

go get -u github.com/denisenkom/go-mssqldb

Bu driver, Golang-ın database/sql paketinin MSSQL ilə işləməsini təmin edir.


2. Verilənlər Bazası ilə Əlaqə

İlk addım MSSQL serverinə qoşulmaqdır. Bunun üçün DSN (Data Source Name) formatında məlumatları təyin etmək lazımdır. DSN-də istifadəçi adı, parol, serverin ünvanı, port və verilənlər bazasının adı yer alır.

Məsələn:

package main

import (
	"database/sql"
	"fmt"
	"log"

	_ "github.com/denisenkom/go-mssqldb" // MSSQL driverini əlavə edirik
)

func main() {
	// DSN formatı: "sqlserver://user_name:password@localhost:1433?database=database_name"
	dsn := "sqlserver://user_name:password@localhost:1433?database=database_name"
	db, err := sql.Open("sqlserver", dsn)
	if err != nil {
		log.Fatal("Bağlantı xətası:", err)
	}
	defer db.Close()

	// Əlaqəni sınayırıq
	if err := db.Ping(); err != nil {
		log.Fatal("Verilənlər bazasına qoşularkən problem:", err)
	}

	fmt.Println("MSSQL verilənlər bazasına uğurla qoşuldunuz!")
}

Qeyd: sql.Open funksiyası əlaqəni dərhal yoxlamır, ona görə də db.Ping() istifadə edərək əlaqənin aktiv olduğunu təsdiq etmək vacibdir.


3. CRUD Əməliyyatları

a) Məlumat Əlavə Etmək (Create)

Yeni məlumat əlavə etmək üçün INSERT sorğusundan istifadə edirik. MSSQL-də əlavə olunan ID-ni əldə etmək üçün OUTPUT INSERTED.id klauzulası istifadə olunur.

b) Məlumat Oxumaq (Read)

Mövcud məlumatları oxumaq üçün SELECT sorğusundan istifadə edirik.

c) Məlumat Yeniləmək (Update)

Mövcud məlumat üzərində dəyişiklik etmək üçün UPDATE sorğusundan istifadə edirik.

d) Məlumat Silmək (Delete)

Artıq lazım olmayan məlumatı silmək üçün DELETE sorğusundan istifadə edirik.


4. Hazırlanan İfadələr (Prepared Statements)

Təkrarlanan sorğular üçün hazırlanan ifadələr performansı artırır və SQL enjeksiyasının qarşısını alır. Gəlin, bir neçə məlumatı hazırlanan ifadə ilə necə əlavə edəcəyimizə baxaq.


5. Transaction (Əməliyyat) İdarəetməsi

Transaction istifadə edərək, birdən çox əməliyyatın ya hamısının uğurla, ya da heç birinin tətbiq olunmasını təmin edirik. Bu, məlumatın tutarlılığını qorumağa kömək edir.


6. Xəta İdarəetməsi və Ən Yaxşı Təcrübələr

  • Xəta Yoxlanışı: Hər əməliyyatdan sonra err yoxlayaraq proqramınızın sabit işləməsini təmin edin.

  • Bağlantı İdarəetməsi: İşiniz bitdikdən sonra defer db.Close() istifadə edərək açıq əlaqələrin düzgün bağlanmasına diqqət yetirin.

  • Hazırlanan İfadələr: Təkrarlanan sorğularda hazırlanan ifadələrdən istifadə edərək həm təhlükəsizliyi, həm də performansı artırın.

  • Transaction İstifadəsi: Əməliyyatların bir-birinə bağlı olduğu hallarda transaction istifadə edin ki, hər hansı bir problem yarandıqda bütün əməliyyatlar geri alınsın.

Last updated