sql.QueryTyped

  table veya boolean sql.QueryTyped( string query, ... )

Yakın Zamanda Eklendi

Bu özellik (2025.05.29) sürümünde yeni eklendi. Şu an için yalnızca Dev Branch üzerinde mevcut olabilir.

Açıklama

Yerel SQLite veritabanında doğru tür yönetimi ve parametre bağlama ile bir sorgu gerçekleştirir, sonuç kümesi olarak bir tablo, sonuç yoksa boş bir tablo ve hata durumunda false döndürür. sql.Query'nin aksine, bu fonksiyon SQLite veri türlerini doğru bir şekilde yönetir ve SQL enjeksiyon saldırılarını önlemek için güvenli parametre bağlamaya olanak tanır.

  • Bu fonksiyon, noktalı virgülle ayrılmış birden fazla ifade yürütebilen sql.Query'nin aksine, yalnızca tek bir SQL ifadesi yürütür.

  • Büyük INTEGER değerleri (±9,007,199,254,740,991'i aşan) tam değerleri korumak için string olarak döndürülür. Bunun nedeni, Lua'nın tüm sayıları double olarak temsil etmesi ve 2⁵³-1'den büyük tamsayılar için hassasiyet kaybetmesidir. Bunları string olarak döndürmek, yuvarlama hatalarından kaynaklanan veri bozulmasını önler.

Argümanlar

1 string query
İsteğe bağlı ? parametre yer tutucuları ile yürütülecek sorgu.
  • SQL enjeksiyonu zafiyetlerini önlemek için string birleştirme yerine daima ? yer tutucuları ile parametre bağlama kullanın.
2 vararg queryParams
Sorgu yer tutucularına bağlanacak parametreler. nil, boolean, number ve string türlerini destekler.

Sorgu parametrelerinin sayısı ? yer tutucularının sayısıyla eşleşmelidir, aksi takdirde sorgu başarısız olur. Örneklere bakın.

Döndürülen Değerler

1 table veya boolean
Bir hata varsa false döndürülür (sql.LastError'a bakın), aksi takdirde doğru şekilde yazılmış sütun değerlerine sahip bir tablo (sonuç yoksa boş tablo) döndürülür.

Örnek

Tüm SQLite veri türleri için parametre bağlamalı, tür belirtilmiş sorguları gösteren doğrudan kullanım örnekleri.

-- Tüm SQLite veri türlerini içeren bir tablo oluştur sql.Query([[CREATE TABLE IF NOT EXISTS test_table ( id INTEGER PRIMARY KEY, big_number BIGINT, small_number INTEGER, decimal_value DOUBLE, float_value REAL, is_enabled BOOLEAN, has_feature BOOL, user_name TEXT, binary_data BLOB, nill TEXT )]]) -- Doğrudan parametre bağlama ile veri ekle sql.QueryTyped([[INSERT INTO test_table ( big_number, small_number, decimal_value, float_value, is_enabled, has_feature, user_name, binary_data, nill ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ? )]], "76561198261855442", -- string olarak BIGINT (büyük Steam ID) 12345, -- INTEGER 999.99, -- DOUBLE 3.14159, -- REAL true, -- BOOLEAN (1 olarak saklanır) false, -- BOOL (0 olarak saklanır) "Player Name", -- TEXT "binary\0data\0here",-- BLOB (null bayt içeren ikili string) nil -- NULL OLABİLEN TEXT ) -- Parametre bağlama ile sorgulama local results = sql.QueryTyped("SELECT * FROM test_table WHERE big_number = ?", "76561198261855442") PrintTable(results)

Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord