万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    Boo Language Advent Calendar 2012 11日目 Title:「Sqlite+Boo連携! in Unity リベンジその2」

    URL: http://atnd.org/events/34622

    自称Booistaのshinriyoです。
    一昨日しっぱいで、さらに昨日のアドベントカレンダーhttp://d.hatena.ne.jp/shinriyo/20121210)では失敗したので、再再トライ。

    一応SqliteTest.db の確認しました。

    > sqlite3 SqliteTest.db    
    SQLite version 3.7.7 2011-06-25 16:35:41
    Enter ".help" for instructions
    Enter SQL statements terminated with a ";"
    sqlite> select * from MONO_TEST;
    5|Mono
    

    MONO_TESTテーブルもあり、中身もあるようです。

    ここの行で行なっている。5と'Mono'のINSERTもうまく行ってますね。

    dbcmd.CommandText = 'INSERT INTO MONO_TEST  ' + '(NID, NDESC )' + 'VALUES(5,\'Mono\')'
    

    多分、ExecuteReader()の返り値のジェネリックスの方が悪いと思って、色々試したがわからない・・・。

    #        reader = dbcmd.ExecuteReader()
    #        reader = dbcmd.ExecuteQuery[of IDataReader]()
    #        reader = dbcmd.ExecuteQuery[of (object)]()
    #        reader = dbcmd.ExecuteQuery[of (string)]()
    

    dbcmd.ExecuteQuery[of (string)]()で行った時のエラー。

    MissingMethodException: Method not found: 'Default constructor not found...ctor() of System.String[]'.
    System.Activator.CreateInstance (System.Type type, Boolean nonPublic)
    System.Activator.CreateInstance (System.Type type)
    SQLite.SQLiteCommand+<ExecuteDeferredQuery>c__Iterator0`1[System.String[]].MoveNext () (at Assets/Plugins/SQLite.cs:1756)
    System.Collections.Generic.List`1[System.String[]].AddEnumerable (IEnumerable`1 enumerable)
    System.Collections.Generic.List`1[System.String[]]..ctor (IEnumerable`1 collection)
    System.Linq.Enumerable.ToList[String[]] (IEnumerable`1 source)
    SQLite.SQLiteCommand.ExecuteQuery[String[]] () (at Assets/Plugins/SQLite.cs:1714)
    SqliteTest.Awake () (at Assets/SqliteTest.boo:42)

    SQlite.csの

    				while (SQLite3.Step (stmt) == SQLite3.Result.Row) {
    					var obj = Activator.CreateInstance(map.MappedType);
    					for (int i = 0; i < cols.Length; i++) {
    

    の部分で怒られるようだ。

    MissingMethodException: Method not found: 'Default constructor not found...ctor()
    ってなんだろう?デフォルトコンストラクタが「...ctor()」を見つけられない?「...ctor()」ってなんだ!
    constructor()の略?


    → ちなみにこの部分で怒られてる
    「Activator.CreateInstance メソッド」・・・指定したパラメータに最も一致するコンストラクタを使用して、指定した型のインスタンスを作成します。

    文字列で指定したクラスのインスタンスを作成するものっぽい?

    しかしわからないので諦めて次回は別のことします・・・。
    そもそもBooが対応してないわけ無いと思うけど。
    NHibernateかな?