その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)
ということで、がんばれそうなので、皆さん使ってみましょう!。
コメント