CodeBlanks Logo Icon CodeBlanks

sql.Open

  • Go kursu
  • İleri seviye
  • Ders 26/68
  • 4 dk

sql.Open ile veritabanı bağlantısı açmayı öğrenirsin.

sql.Open

sql.Open(sürücü, dsn) bir *sql.DB ve error döndürür. Dikkat: Open bağlantı kurmaz, yalnızca ayarları doğrular. Gerçek bağlantıyı denemek için Ping çağrılır:

db, err := sql.Open("postgres", "postgres://user:pass@localhost/app?sslmode=disable")
if err != nil { log.Fatal(err) }
defer db.Close()
if err := db.Ping(); err != nil { log.Fatal(err) }

DSN ve gizli bilgiler

DSN (veri kaynağı adı) sürücüye göre değişir: MySQL user:pass@tcp(host:3306)/db, PostgreSQL URL biçimi kullanır. Parolayı koda yazmak yerine ortam değişkeninden oku:

dsn := os.Getenv("DATABASE_URL")
db, err := sql.Open("postgres", dsn)

Uygulama Bilinmeyen sürücü

sql.Open("yok", "x") çağır. Kayıtlı olmayan sürücü hata döndürür; err != nil ise fmt.Println("sürücü yok") yazdır.

Başlangıç kodu

main.go
package main

import (
    "database/sql"
    "fmt"
)

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import (
    "database/sql"
    "fmt"
)

func main() {
    _, err := sql.Open("yok", "x")
    if err != nil {
        fmt.Println("sürücü yok")
    }
}

Beklenen çıktı

sürücü yok

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Veritabanı kapalıyken <code>sql.Open</code> ne yapar?

  • Genellikle hata vermez; hata ilk sorguda ya da Ping'de çıkar Doğru cevap
  • Hemen panic üretir
  • Sonsuza kadar bekler
  • Veritabanını başlatır

Açıklama: Open tembeldir; bağlantı ilk ihtiyaçta açılır. Uygulama başında Ping ile kontrol etmek sorunu erken gösterir.

2 Bağlantıyı dene

Soru
if err := db.____(); err != nil {
    log.Fatal(err)
}
Cevap
if err := db.Ping(); err != nil {
    log.Fatal(err)
}

Açıklama: Ping gerçek bir bağlantı kurmayı dener ve sorun varsa hata döner.

3 Fonksiyon ve görevi

Kavram Anlamı
sql.Open Havuzu hazırlar
db.Ping Bağlantıyı dener
db.Close Havuzu kapatır
os.Getenv DSN'i ortamdan okur

İleri seviye bölümündeki tüm dersler