“RUN” それは魔法の言葉

私とコンピュータの思い出を、だらだらと綴ります。最近はHSP3でのゲーム作り日記です

151.HSPでゲームを作ろう:技術研究 データベースを使ってみる その2

さて、サンプルプログラムの動きは分かったので、次は培養臼のハイスコア記録処理を考える。

とりあえずハイスコア記録用のテーブル構成をこんな感じにした。
 テーブル:scorelist
 カラム
  インデックス:ID(プライマリーキー、自動でカウントアップ)
  スコア:score
  ネーム:score_name
  クリアステージ:stage
  記録日時:rec_date

で、普通のデータベースなら、型を決めるので、SQLiteの型を調べてみたのだが、日付型がないのね…

NULL NULL値
INTEGER 符号付整数。1, 2, 3, 4, 6, or 8 バイトで格納
REAL 浮動小数点数。8バイトで格納
TEXT テキスト。UTF-8, UTF-16BE or UTF-16-LEのいずれかで格納
BLOB Binary Large OBject。入力データをそのまま格納

日付の処理は、どうやら関数を使うらしいので、とりあえず気にせず文字列でぶっこめば良いみたい。

ということで、サンプルプログラムを見ながら、テーブル作成のSQLを走らせる。

sql_q "CREATE TABLE IF NOT EXISTS scorelist (ID INTEGER PRIMARY KEY, score , score_name , stage , rec_date)"

ここからはHSP3ではなく、SQLの文法の話になるな。
CREATE TABLE文で、新しくテーブルを作るのだが、存在していなければという条件「IF NOT EXISTS」が付いている。
なぜこうしているかというと、スクレレでは、sql_open命令で指定したDBファイルが存在していなければ、自動で作成してくれる。
作成してくれても、テーブルは何もない状態。このままでは、SQLを実行できないので、CREATE TABLEを入れている。
存在していれば、実行されないのでテーブルが重複して作られたエラーにもならない。

ただ、培養臼では、ハイスコアを記録するためのDBなので、初めからトップテンのレコードが存在する状態にしたいと思っている。
なので、実際に作りこむときは、別の処理でチェックしよう。

長くなってきたのでもう少し続く。