その1で、SELECTを実行しても値が取れないと書いてしまったのですが、SQLiteStatementクラスにインデクサがあるのを見落としていまして(だからソース読め)、このインデクサを使えば普通にカラムの値を取れます。
以下のような感じになります。
namespace SqlitePclSample
{
    using System;
    using SQLitePCL;
    /// 
    /// SQLitePCLのサンプル
    ///  
    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)
ということで、がんばれそうなので、皆さん使ってみましょう!。

 

コメント