2012-08-24 7 views
7

Próbuję przesłać aplikację na iOS, która używa natywnego Sqlite3 i intensywnie korzysta z SqliteDataReader. Na platformie docelowej używam SQLIte-Net (https://github.com/praeclarum/sqlite-net) i tam klasa SqliteDataReader nie istnieje. Jakie są moje najlepsze opcje konwersji? Wykorzystanie czytnika jest zawsze kod tak:Gdzie jest SqliteDataReader w sqlite-net?

SqliteConnection oConn = AppDelegateBase.MasterDatabase.CreateDBMSConnection(); 
using (SqliteCommand oCmd = new SqliteCommand ("SELECT * FROM ATable"), oConn)) 
using (var oReader = oCmd.ExecuteReader ()) 
{ 
    while (oReader.Read ()) 
    { 
    int val = Convert.ToInt32(oReader["someColumn"]); 
    } 
    oReader.Close(); 
} 
+0

Dlaczego chcesz osobno klasy DataReader? Kod, który wysłałeś, działa bardzo dobrze. 'OReader' jest twoim obiektem' IDbDataReader'. Lepiej użyj wersji ADO.NET opublikowanej przez tHand – nawfal

+0

I nie potrzebujesz czytnika.Close kiedy owijacie go w klauzulę uzytkownika – nawfal

+0

I'min ta sama łódź - właśnie wysłałem zapytanie o SO z dalszym wyjaśnieniem tego, co ja ' Próbuję to zrobić - czy rozwiązałeś swój problem? http://stackoverflow.com/questions/21490426/sqlitedatareader-behavior-crom-sqlite-for-windows-phone-8 – jchristof

Odpowiedz

1

Nie ma implementacji IDataReader/IDataRecord w sqlite-net, ponieważ sqlite-net nie jest implementacją adaptera ADO .net.

Najpierw należy sprawdzić przykłady na stronie GitHub. Nie powinieneś używać języka SQL, takiego jak opisany here. Jeśli potrzebujesz implementacji ADO, istnieją inne biblioteki SQLite dla języka C#, takie jak System.Data.SQLite (oficjalny), sqlite-csharp i Mono.Data.Sqlite.

2

Ive używany adapter System.Data.SQLite ADO powodzeniem w kilku projektach. Wierzę, że ma klasę SQLDataReader. Nie jestem pewien, czy jest to jednak ta sama implementacja, którą już wykonujesz.