0Pricing
Go Academy · Ders

Satırları Sorgulama

Sonuç kümelerini okuyun

Satırları Sorgulama, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

Sonuç kümelerini sorgulama

SELECT gibi satır döndüren ifadeler için Query kullanın. Bu, üzerinde yineleme yaptığınız bir *sql.Rows döndürür. Tek bir değer için QueryRow daha basittir.

db.Query

Query, SQL'i gönderir ve satırlarla birlikte bir hata döndürür. Satırları kullanmadan önce her zaman hatayı kontrol edin.

rows, err := db.Query("SELECT id, name FROM users WHERE active = $1", true)
if err != nil {
    log.Fatal(err)
}

rows.Close() çağrısını her zaman defer edin

Satırlar, kapatılana kadar bir veritabanı bağlantısını tutar. defer rows.Close() bağlantıyı havuza geri verir. Bunu unutmak, yük altında bağlantıların sızmasına neden olur.

defer rows.Close()

rows.Next ile yineleme

rows.Next() bir sonraki satıra ilerler ve işlem tamamlandığında false döndürür. Döngünün içinde, sütun değerlerini değişkenlere kopyalamak için Scan çağırırsınız.

for rows.Next() {
    var id int
    var name string
    if err := rows.Scan(&id, &name); err != nil {
        log.Fatal(err)
    }
    fmt.Println(id, name)
}

Scan işaretçiler alır

Scan, geçirdiğiniz değişkenlere yazar; bu nedenle işaretçiler (&id, &name) geçirmeniz gerekir. İşaretçilerin sayısı ve sırası, seçilen sütunlarla eşleşmelidir.

rows.Err kontrolü

Döngü, veriler tükendiği için veya yineleme sırasında bir hata oluştuğu için sona erebilir. Döngüden sonra, yineleme hatalarını yakalamak için rows.Err() çağrısını yapın.

if err := rows.Err(); err != nil {
    log.Fatal(err)
}

Tek satır için QueryRow

Tam olarak bir satır beklediğinizde QueryRow ile Scan kullanmak daha temizdir. Hiçbir satır eşleşmezse Scan, sql.ErrNoRows döndürür.

var name string
err := db.QueryRow("SELECT name FROM users WHERE id = $1", 7).Scan(&name)
if err == sql.ErrNoRows {
    fmt.Println("not found")
}

Çalıştırılabilir Scan benzetimi

Gerçek sorgulama bir veritabanı gerektirir; bu nedenle çalıştırılabilir örnek, yineleme düzenini göstermek için Query, Next ve Scan akışını bellek içi bir dilim üzerinde modeller.

package main

import "fmt"

type Row struct {
    ID   int
    Name string
}

func main() {
    rows := []Row{{1, "Ada"}, {2, "Lin"}, {3, "Guido"}}
    for i := 0; i < len(rows); i++ {
        var id int
        var name string
        id = rows[i].ID
        name = rows[i].Name
        fmt.Printf("id=%d name=%s\n", id, name)
    }
    fmt.Println("scanned", len(rows), "rows")
}

NULL değerlerini ele alma

NULL içeren bir sütun doğrudan bir dizeye veya int değerine taranamaz. Kodun NULL ile boş değeri ayırt edebilmesi için sql.NullString, sql.NullInt64 veya bir işaretçi türü kullanın.

var email sql.NullString
rows.Scan(&email)
if email.Valid {
    fmt.Println(email.String)
}

Yapılara tarama

Standart kitaplık, yapıların tamamına değil, tek tek değişkenlere tarama yapar. Sütunları yapı alanlarıyla eşlemek için &u.ID, &u.Name geçirin. sqlx gibi kitaplıklar bunu otomatikleştirir.

SELECT * kullanmaktan kaçının

Scan sırasının sabit kalması için sütunları açıkça listeleyin. Bir şema değişikliği yeni bir sütun eklerse SELECT * kullanımına güvenen konumsal Scan işlemi sessizce bozulur.

Hızlı Kontrol

Sorgulama bilginizi sınayın.

Özet

Satırları sorgulamayı öğrendiniz:

  • Query, *sql.Rows döndürür; rows.Close() çağrısını defer edin
  • rows.Next ile döngü kurun, Scan aracılığıyla işaretçilere kopyalayın
  • Döngüden sonra rows.Err() değerini kontrol edin
  • Tek satırlar için QueryRow, eşleşme olmadığında sql.ErrNoRows
  • NULL olabilen sütunlar için Null türlerini kullanın

Sıkça Sorulan Sorular

“Satırları Sorgulama” dersi ücretsiz mi?

Evet — “Satırları Sorgulama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“Satırları Sorgulama” dersinde ne öğreneceğim?

Sonuç kümelerini okuyun Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Go Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Satırları Sorgulama” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Bağlantı Açma
  2. Satırları Sorgulama
  3. Hazırlanmış İfadeler
  4. İşlemler
← Go Academy Sayfasına Dön