🗄️ sqlite - SQLite Veritabanı
Embedded SQL Database, Transactions, Prepared Statements
42
Fonksiyon
1,167
Satır
36 KB
Boyut
🚀 Hızlı Başlangıç
içe_aktar sqlite
// Veritabanı aç
değişken db = sqlite.open("app.db")
// Tablo oluştur
sqlite.exec(db, "CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE,
age INTEGER
)")
// Insert
sqlite.exec(db, "INSERT INTO users (name, email, age) VALUES ('Ali', 'ali@test.com', 25)")
// Prepared statement (SQL injection koruması)
değişken stmt = sqlite.prepare(db, "INSERT INTO users (name, email, age) VALUES (?, ?, ?)")
sqlite.bind(stmt, ["Ayşe", "ayse@test.com", 30])
sqlite.step(stmt)
sqlite.finalize(stmt)
// Query
değişken sonuçlar = sqlite.query(db, "SELECT * FROM users WHERE age > 20")
her satır içinde sonuçlar için yap
yazdır(satır["name"] + " - " + satır["email"])
son
// Transaction
sqlite.begin(db)
dene yap
sqlite.exec(db, "UPDATE users SET age = age + 1")
sqlite.commit(db)
son yakala hata yap
sqlite.rollback(db)
yazdır("Hata: " + hata.mesaj())
son
sqlite.close(db)
📚 Özellikler
- SQLite 3.x embedded database
- Full SQL support (SELECT, INSERT, UPDATE, DELETE, JOIN, etc.)
- Prepared statements (SQL injection prevention)
- Transactions (ACID properties)
- Type safety
- Connection pooling
💡 Örnekler
User Management System
içe_aktar sqlite
sınıf UserDB yap
değişken db: Database
fonksiyon yeni(dosya_yolu: yazı) yap
self.db = sqlite.open(dosya_yolu)
self.init_schema()
son
fonksiyon init_schema() yap
sqlite.exec(self.db, "
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
email TEXT UNIQUE NOT NULL,
password_hash TEXT NOT NULL,
created_at INTEGER DEFAULT (strftime('%s', 'now'))
)
")
son
fonksiyon kullanıcı_ekle(username: yazı, email: yazı, password_hash: yazı) -> Sonuç yap
değişken stmt = sqlite.prepare(self.db,
"INSERT INTO users (username, email, password_hash) VALUES (?, ?, ?)")
sqlite.bind(stmt, [username, email, password_hash])
eğer sqlite.step(stmt) ise yap
değişken id = sqlite.last_insert_id(self.db)
sqlite.finalize(stmt)
dön Tamam(id)
son değilse yap
sqlite.finalize(stmt)
dön Hata("Kullanıcı eklenemedi")
son
son
fonksiyon kullanıcı_bul(username: yazı) -> Seçenek yap
değişken stmt = sqlite.prepare(self.db,
"SELECT * FROM users WHERE username = ?")
sqlite.bind(stmt, [username])
eğer sqlite.step(stmt) ise yap
değişken user = yap
"id": sqlite.column_int(stmt, 0),
"username": sqlite.column_text(stmt, 1),
"email": sqlite.column_text(stmt, 2),
"password_hash": sqlite.column_text(stmt, 3),
"created_at": sqlite.column_int(stmt, 4)
son
sqlite.finalize(stmt)
dön Bazı(user)
son değilse yap
sqlite.finalize(stmt)
dön Hiç
son
son
fonksiyon tüm_kullanıcılar() -> Dizi yap
dön sqlite.query(self.db, "SELECT id, username, email FROM users")
son
fonksiyon kullanıcı_sil(id: tamsayı) -> bool yap
değişken stmt = sqlite.prepare(self.db, "DELETE FROM users WHERE id = ?")
sqlite.bind(stmt, [id])
değişken başarılı = sqlite.step(stmt)
sqlite.finalize(stmt)
dön başarılı
son
son
// Kullanım
değişken user_db = UserDB.yeni("users.db")
user_db.kullanıcı_ekle("berk_dev", "berk@example.com", "hash_buraya")
değişken kullanıcı = user_db.kullanıcı_bul("berk_dev")
eğer kullanıcı ise yap
yazdır("Kullanıcı bulundu: " + kullanıcı.değer()["email"])
son
Transaction ile Batch Insert
içe_aktar sqlite, csv
fonksiyon csv_import(db: Database, csv_dosya: yazı, tablo: yazı) yap
değişken satırlar = csv.oku(csv_dosya)
sqlite.begin(db)
dene yap
değişken stmt = sqlite.prepare(db,
"INSERT INTO " + tablo + " VALUES (?, ?, ?)")
her satır içinde satırlar için yap
sqlite.bind(stmt, satır)
sqlite.step(stmt)
sqlite.reset(stmt)
son
sqlite.finalize(stmt)
sqlite.commit(db)
yazdır("Import başarılı: " + satırlar.uzunluk().yazıya() + " satır")
son yakala hata yap
sqlite.rollback(db)
yazdır("Import başarısız: " + hata.mesaj())
son
son
değişken db = sqlite.open("data.db")
csv_import(db, "users.csv", "users")