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
package main
import (
"database/sql"
"fmt"
)
func main() {
// buraya yaz
}Örnek çözüm
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
if err := db.____(); err != nil {
log.Fatal(err)
}
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 |