wxSQLite3の練習

2017/12/14

Bindを使いたかったのだけれどエラー出まくりで断念。結局SQLクエリをwxStringでつなげた。

/**
 * WxSQLiteTest.cpp - wxSQLiteのテスト用ソースコード
 *
 */
#include "WxSQLiteTest.h"

bool WxSQLiteTest::OnInit() {
	return true;
}

int WxSQLiteTest::OnExit() {
	return 0;
}

int WxSQLiteTest::OnRun() {
  const wxString dbFile = wxGetCwd() + wxT("/test.db");

  try {
    // データベースの初期化
    wxSQLite3Database::InitializeSQLite();

    wxSQLite3Database db;

    cout << "SQLite3 Version:      " << (const char*) db.GetVersion().mb_str(wxConvUTF8) << endl;
    cout << "SQLite3 Source Id:    " << (const char*) db.GetSourceId().mb_str(wxConvUTF8) << endl;

    // DBを開く
    db.Open(dbFile);

    // テーブルが無ければテーブルを作る
    if (!db.TableExists(wxT("DIARY_USERS"))) {
      db.ExecuteQuery(wxT("CREATE TABLE DIARY_USERS(OID TEXT, NAME TEXT, KANANAME TEXT)"));
    }

    // テーブル内にデータがあれば削除する
    db.ExecuteQuery(wxT("DELETE FROM DIARY_USERS"));

    // データの元ネタ用配列
    wxArrayString array;

    array.Add(wxT("(1,天野雪輝,あまの ゆきてる)"));
    array.Add(wxT("(2,我妻由乃,がさい ゆの)"));
    array.Add(wxT("(3,火山高夫,ひやま たかお)"));
    array.Add(wxT("(4,来栖圭吾,くるす けいご)"));
    array.Add(wxT("(5,豊穣礼佑,ほうじょう れいすけ)"));
    array.Add(wxT("(6,春日野椿,かすがの つばき)"));
    array.Add(wxT("(7,戦場マルコ,いくさば マルコ)"));
    array.Add(wxT("(8,上下かまど,うえした かまど)"));
    array.Add(wxT("(9,雨流みねね,うりゅう みねね)"));
    array.Add(wxT("(10,月島狩人,つきしま かりゅうど)"));
    array.Add(wxT("(11,ジョン・バックス,ジョン・バックス)"));
    array.Add(wxT("(12,平坂黄泉,ひらさか よもつ)"));

    // 12回繰り返す
    for(int i=0;i < array.GetCount();i++)
      {
	wxString SQL_QUERY = wxT("INSERT INTO DIARY_USERS VALUES");
	SQL_QUERY += array[i];

	// デバッグ用文字列
	cout << SQL_QUERY << endl;
	db.ExecuteQuery(SQL_QUERY);
      }

    db.Close();

  } catch (wxSQLite3Exception& e) {
    cerr << e.GetErrorCode() << ":" << (const char*) (e.GetMessage().mb_str()) << endl;
  }
  return 0;
}

ここまでやるのすごく面倒だった
f:id:panzer-jagdironscrap1:20120229010606j:image:left