その1で、SELECTを実行しても値が取れないと書いてしまったのですが、SQLiteStatementクラスにインデクサがあるのを見落としていまして(だからソース読め)、このインデクサを使えば普通にカラムの値を取れます。
以下のような感じになります。
namespace SqlitePclSample { using System; using SQLitePCL; /// <summary> /// SQLitePCLのサンプル /// </summary> internal class Program { #region Methods private static void Main(string[] args) { using (var con = new SQLiteConnection("Test.DB")) { //// CREATE TABLE SQLiteResult result; var stmCreateTable = con.Prepare("CREATE TABLE Test (ID INTEGER, Name TEXT)"); int loop = 0; result = stmCreateTable.Step(); Console.WriteLine(result.ToString()); stmCreateTable.Dispose(); // INSERT var stmInsert = con.Prepare("INSERT INTO Test (ID, Name) VALUES(1, 'Tadahiro Ishisaka')"); result = stmInsert.Step(); Console.WriteLine(result.ToString()); stmInsert.Dispose(); // SELECT var stmSelect = con.Prepare("SELECT ID, Name FROM Test"); stmSelect.Reset(); do { result = stmSelect.Step(); if (result == SQLiteResult.ROW) { // Statementにインデクサがあるから、それで列のデータを取得するよ。 var id = (long)stmSelect[0]; var name = (string)stmSelect[1]; Console.WriteLine(id + ":" + name); } } while (result == SQLiteResult.ROW); stmSelect.Dispose(); } Console.ReadLine(); } #endregion } }
インデクサはObject型なのでキャストでがんばる感じです。(まぁODBCとか何とかではry)
ということで、がんばれそうなので、皆さん使ってみましょう!。