データベース(SQLite.Net)

LuaスクリプトからSQLiteを利用することも可能です。

準備

CLRPackage.luaとSQLite.Netのインストールを行っておきます。 CLRPackage.luaは [NLuaのgithubのページ] にあるCLRPackage.luaをダウンロードして CFusen.exeと同じフォルダーにコピーしてください。

SQLite.Netは [SQLite Wiki] にある.Net4.Xでビルドされた利用中のWindowsに合ったもの(32bit or 64bit) をダウンロードしてSystem.Data.SQLite.dllをCFusen.exeと同じフォルダーにコピーします。 SQLite.Netがbundle版でない場合はSQLite.Interop.dllも必要なのでCFusen.exeと同じフォルダーにコピーします。 dbファイルは何処に保存されていても構いません。

参考:System.Data.SQLiteでどれをインストールするべきか

テーブルの読み込み

次のサンプルはSQLite.Netに付属のnorthwindEF.dbからCustomersテーブルをcsvとして付箋上に表示する例です。 DBファイルのパスは適宜変更してください。

require("CLRPackage")
import("System.Data.SQLite.dll", "System.Data.SQLite")
x = "No,"
n = 0
SQLite = CLRPackage("System.Data.SQLite", "System.Data.SQLite")
conn = SQLite.SQLiteConnection("Data Source=SQLiteNet\\northwindEF.db")
conn:Open()
cmd = conn:CreateCommand()
cmd.CommandText = "select * from Customers"
rdr = cmd:ExecuteReader()
while (rdr:Read()) do
  n = n + 1
  if n == 1 then
    for i = 0 , rdr.FieldCount - 1 do
      if 0 < i then
        x = x .. ","
      end
      x = x .. rdr:GetName(i)
    end
  end
  x = x .. "\n" .. string.format("%2d", n)
  for i = 0 , rdr.FieldCount - 1 do
    if rdr:IsDBNull(i) then
      x = x .. ",(null)"
    else
      x = x ..","..rdr:GetValue(i)
    end
  end
end
conn:Close()

結果(の一部)

結果

Luaスクリプトの注意点

今回の様にLuaスクリプトで.Netのクラスを 利用する場合は スクリプトの間違いでエラーが発生すると 正しく入力し直したとしても エラーが出続ける場合があります。 その様な場合は CFusenの全付箋再読込を行ってみてください。

 
comments powered by Disqus