Aracılığıyla paylaş


iOS uygulamasında Veri Kullanma

DataAccess_Adv örneği, kullanıcı girişi ve CRUD (Oluşturma, Okuma, Güncelleştirme ve Silme) veritabanı işlevselliğine izin veren çalışan bir uygulama gösterir. Uygulama iki ekrandan oluşur: liste ve veri giriş formu. Tüm veri erişim kodu, iOS ve Android'de değişiklik yapılmadan yeniden kullanılabilir.

Bazı veriler eklendikten sonra uygulama ekranları iOS'ta şöyle görünür:

iOS sample list

iOS sample detail

iOS Projesi aşağıda gösterilmiştir; bu bölümde gösterilen kod Orm dizininde yer almaktadır:

iOS project tree

iOS'ta ViewControllers için yerel kullanıcı arabirimi kodu bu belgenin kapsamı dışında. Kullanıcı arabirimi denetimleri hakkında daha fazla bilgi için iOS Tablo ve Hücrelerle Çalışma kılavuzuna bakın.

Okundu

Örnekte birkaç okuma işlemi vardır:

  • Listeyi okuma
  • Tek tek kayıtları okuma

sınıfındaki StockDatabase iki yöntem şunlardır:

public IEnumerable<Stock> GetStocks ()
{
    lock (locker) {
        return (from i in Table<Stock> () select i).ToList ();
    }
}
public Stock GetStock (int id)
{
    lock (locker) {
        return Table<Stock>().FirstOrDefault(x => x.Id == id);
    }
}

iOS verileri olarak farklı işler UITableView.

Oluşturma ve Güncelleştirme

Uygulama kodunu basitleştirmek için, PrimaryKey'in ayarlanıp ayarlanmadığına bağlı olarak Ekleme veya Güncelleştirme işlemi yapabilen tek bir kaydetme yöntemi sağlanır. Özelliği bir [PrimaryKey] öznitelikle işaretlendiğindenId, bunu kodunuzda ayarlamamalısınız. Bu yöntem, değerin daha önce kaydedilip kaydedilmediğini algılar (birincil anahtar özelliği denetlenerek) ve nesneyi buna göre ekler veya güncelleştirir:

public int SaveStock (Stock item)
{
    lock (locker) {
        if (item.Id != 0) {
            Update (item);
            return item.Id;
    } else {
            return Insert (item);
        }
    }
}

Gerçek dünya uygulamaları genellikle bazı doğrulamalar (gerekli alanlar, en düşük uzunluklar veya diğer iş kuralları gibi) gerektirir. İyi platformlar arası uygulamalar paylaşılan kodda mümkün olduğunca doğrulama mantıksalını uygular ve doğrulama hatalarını platformun özelliklerine göre görüntülenmek üzere kullanıcı arabirimine geri geçirir.

Sil

ve yöntemlerinden Insert farklı olarak, Delete<T> yöntemi tam Stock bir nesne yerine yalnızca birincil anahtar değerini kabul Update edebilir. Bu örnekte yöntemine bir Stock nesne geçirilir, ancak yönteme Delete<T> yalnızca Id özelliği geçirilir.

public int DeleteStock(Stock stock)
{
    lock (locker) {
        return Delete<Stock> (stock.Id);
    }
}

Önceden doldurulmuş bir SQLite veritabanı dosyası kullanma

Bazı uygulamalar, verilerle doldurulmuş bir veritabanıyla birlikte gönderilir. Mevcut bir SQLite veritabanı dosyasını uygulamanızla birlikte göndererek ve erişmeden önce yazılabilir bir dizine kopyalayarak bunu mobil uygulamanızda kolayca gerçekleştirebilirsiniz. SQLite birçok platformda kullanılan standart bir dosya biçimi olduğundan, SQLite veritabanı dosyası oluşturmak için kullanılabilecek çeşitli araçlar vardır:

  • SQLite Manager Firefox Uzantısı – Mac ve Windows üzerinde çalışır ve iOS ve Android ile uyumlu dosyalar üretir.
  • Komut Satırı – Bkz. www.sqlite.org/sqlite.html .

Uygulamanızla dağıtım için veritabanı dosyası oluştururken, özellikle de adların C# sınıflarınızla ve özelliklerinizle (veya ilişkili özel özniteliklerle) eşleşmesini bekleyecek SQLite.NET kullanıyorsanız, kodunuzun beklediğiyle eşleştiğinden emin olmak için tabloların ve sütunların adlandırmasına dikkat edin.

iOS için, sqlite dosyasını uygulamanıza ekleyin ve Derleme Eylemi: İçerik ile işaretlendiğinden emin olun. Herhangi bir veri yöntemini çağırmadan önce, dosyayı yazılabilir bir dizine kopyalamak için kodunu FinishedLaunching 'a yerleştirin. Aşağıdaki kod, data.sqlite adlı mevcut bir veritabanını yalnızca henüz yoksa kopyalar.

// Copy the database across (if it doesn't exist)
var appdir = NSBundle.MainBundle.ResourcePath;
var seedFile = Path.Combine (appdir, "data.sqlite");
if (!File.Exists (Database.DatabaseFilePath))
{
  File.Copy (seedFile, Database.DatabaseFilePath);
}

Bu işlem tamamlandıktan sonra yürütülen tüm veri erişim kodları (ADO.NET veya SQLite.NET kullanarak) önceden doldurulmuş verilere erişebilir.