さて、サンプルプログラムの動きは分かったので、次は培養臼のハイスコア記録処理を考える。
とりあえずハイスコア記録用のテーブル構成をこんな感じにした。
テーブル: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なので、初めからトップテンのレコードが存在する状態にしたいと思っている。
なので、実際に作りこむときは、別の処理でチェックしよう。
長くなってきたのでもう少し続く。