Kurulum adımlarını tamamladıktan sonra SQLite'a tam bir giriş yapmak için SQL üzerindeki temel işlemleri beraber inceleyelim.
Veri Tabanı ve Örnek Tablo Oluşturulması
Function createDataBase([string]$db) {
Try {
If (!(Test-Path $db)) {
$CONN = New-Object -TypeName System.Data.SQLite.SQLiteConnection
$CONN.ConnectionString = "Data Source=$db"
$CONN.Open()
$createTableQuery = "CREATE TABLE test(
ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
name TEXT NULL,
surname TEXT NULL,
number TEXT NULL,
address TEXT NULL
);"
$CMD = $CONN.CreateCommand()
$CMD.CommandText = $createTableQuery
$CMD.ExecuteNonQuery()
$CMD.CommandText = $createUniqueIndex
$CMD.ExecuteNonQuery()
$CMD.Dispose()
$CONN.Close()
Write-Host "Veri tabanı başarıyla oluşturuldu."
} Else {
Write-Host "Veri tabanı zaten var."
}
} Catch {
Write-Host "Veri tabanı oluşturulamadı !"
}
}
Add-Type -Path "C:\Windows\sqlite\System.Data.SQLite.dll"
createDataBase "C:\Windows\db\testVT.sqlite"
Yukarıdaki Powershell betiğinde kısaca test adında bir veri tabanı oluşturuyor, bu veri tabanının içine de id, ad, soyad, numara ve adres kolonlarını içeren bir tablo ekliyoruz.
Tabloya Veri Ekleme İşlemi
Function insertDatabase([string]$db, [System.Collections.ArrayList]$rows) {
Try {
If (Test-Path $db) {
$CONN = New-Object -TypeName System.Data.SQLite.SQLiteConnection
$CONN.ConnectionString = "Data Source=$db"
$CONN.Open()
$CMD = $CONN.CreateCommand()
ForEach($row in $rows) {
$sql = "INSERT OR REPLACE INTO test (ID,name,surname,number,address)"
$sql += " VALUES ((select ID from test where number = @number),@name,@surname,@number,@address);"
$CMD.Parameters.AddWithValue("@ID", $NULL)
$CMD.Parameters.AddWithValue("@name", $row.name)
$CMD.Parameters.AddWithValue("@surname", $row.surname)
$CMD.Parameters.AddWithValue("@number", $row.number)
$CMD.Parameters.AddWithValue("@address", $row.address)
$CMD.CommandText = $sql
$CMD.ExecuteNonQuery()
}
$CMD.Dispose()
$CONN.Close()
Write-Host "Kayıtlar başarıyla eklendi."
} Else {
Write-Host "Veri tabanına ulaşılamıyor."
}
} Catch {
Write-Host "Kayıtlar veri tabanına eklenemedi."
}
}
Add-Type -Path "C:\Windows\sqlite\System.Data.SQLite.dll"
$Rows = New-Object System.Collections.ArrayList
$Rows.Add(@{'name'='Zeki Ahmet'; 'surname'= 'Bayar'; 'number'='5986'; 'address'='127.0.0.1'})
insertDatabase "C:\Windows\db\testVT.sqlite" $Rows
Eklenmek istenen satırlar, main aşamasında tanımlanan Rows listesine add methodu yardımı ile eklenip, insertDatabase fonksiyonuna gönderilmelidir. insertDatabase fonksiyonu eğer verilen numara tabloda başka bir numara ile aynı ise onu güncelleyecek, daha önceden böyle bir satır eklenmediyse yenisini ekleyecektir.
Tablonun Okunması
Function queryDatabase([string]$db, [string]$sql) {
Try {
If (Test-Path $db) {
$CONN = New-Object -TypeName System.Data.SQLite.SQLiteConnection
$CONN.ConnectionString = "Data Source=$db"
$CONN.Open()
$CMD = $CONN.CreateCommand()
$CMD.CommandText = $sql
$ADAPTER = New-Object -TypeName System.Data.SQLite.SQLiteDataAdapter $CMD
$DATA = New-Object System.Data.DataSet
$ADAPTER.Fill($DATA)
$TABLE = $DATA.Tables
ForEach ($t in $TABLE){
Write-Output $t
}
$CMD.Dispose()
$CONN.Close()
} Else {
Write-Host "Veritabanı bulunamadı."
}
} Catch {
Write-Host "Sorgu gönderilemiyor."
}
}
Add-Type -Path "C:\Windows\sqlite\System.Data.SQLite.dll"
$Query = "Select * From test"
queryDatabase "C:\Windows\db\testVT.sqlite" $Query
Bu kısımda da oluşturduğumuz veri tabanına eklediğimiz satırları kontrol etmek için basit bir select ifadesini veri tabanına nasıl gönderebileceğimizi gördük. Query değişkenine başka sql sorguları yazarak onların da çıktılarını bu fonksiyon yardımı ile görebilirsiniz.
Bu dokümanda kullanılan fonksiyonlar buradaki bağlantıdan uyarlanmıştır.