AndroidのSQLiteを利用することが出来ます。
プログラムソース内とダイレクトコマンドの両方から利用できます。(SQLモード切り替え可)
独自機能としてBasicの変数を利用することができます。
クエリー結果をテキスト出力だけでなく配列変数へ格納することができます。
*openしたSQLファイルは最後に必ずcloseして下さい。
SQL |
[機能] SQLiteコマンドを実行します。
[書式] SQL SQLiteコマンド
[説明]
SQL文の中にBasicの変数を含めるには @var のように
変数名の前に@を付けます。(末尾は空白1文字入れて下さい)
文字変数の場合は'moji'のように囲われた値の結果になります。
コマンドの末尾は;が付いていなくても構いません。
SQL文中の'はrem文と解釈されることはありません。
[例] SQLサンプル (50行で変数使用) 2回目以降は30行の create文を削除して下さい。
[smp_sql.bas]
10 dd=2: ss$="Lemon"
20 sql open test1.db
30 sql create table table1(no int, name
text)
40 sql insert into table1
values (1,'Grapes')
50 sql insert
into table1 values (@dd , @ss$ )
60
sql insert into table1 values (3,'Banana')
70 sql select * from table1
80 sql close
[結果]
no name
-- -------
1 Grapes
2 Lemon
3 Banana
OK
EX_SQL |
[機能] クエリー結果の出力先、SQLモードの設定を行います。
[書式] EX_SQL [二次元文字配列名]
[,on|off]
[説明]
クエリー結果を出力する文字配列変数を変数名で指定します。
あらかじめ定義された二次元配列である必要があります。
配列[項目,レコード]の並びで格納されます。
0番レコードには項目名が格納されます。
省略した場合はテキスト出力になります。(デフォルト)
第二パラメータでSQLモードを指定します。
SQLモードでは文頭にSQLを付ける必要がありません。
ONにすると全てSQLコマンドとして解釈されます。(一部編集、実行のBasicコマンドは使用できます)
SQLモードを抜けるには EX_SQL ,OFF を実行するか
メニューでモードの切り替えを行います。
またここで @変数の文字列変換時に文字を''で囲うかどうかの設定も行えます。
EX_SQL ,VON で囲う設定(デフォルト)、
EX_SQL ,VOFF で囲わない設定になります。
(*SQLの文字列データは'sample'のように''で囲われるのが通常です)
ver4.16からプログラム終了・中断時にSQLファイルを自動でcloseさせる設定ができるようになりました。
EX_SQL ,ATON 終了時に自動でcloseする。
EX_SQL ,ATOFF 終了時に自動でcloseしない(デフォルト)
この設定によらずに、できるだけプログラム中のSQL CLOSE文にてcloseさせるようにして下さい。
*注意
cモードではEX_SQL ,ON設定中でも、GOSUBやFUNC関数で飛んだ先では接頭の'SQL
'文字は付加されないので
注意して下さい。飛んだ先でEX_SQL
,ON設定をすることは可能です。毎回'SQL 'を記述する方法もあります。
[例] SQLモードにして配列に結果を納めるサンプル。
[smp_sql_ary.bas]
10 dim sd$(8,64) :'(Item,Record)
20 ex_sql sd$,on :'SQL mode
30 open test2.db
40 create table table1(no int, name
text)
50 insert into table1 values
(1,'Grapes')
60 insert into table1
values (2,'Lemon')
70 insert into
table1 values (3,'Banana')
80 select
* from table1
90 close
100 ex_sql ,off :'mode cancel
110 print sd$(0,0);" ";sd$(1,0)
:'Item
120 print sd$(0,1);sd$(1,1)
130 print sd$(0,2);sd$(1,2)
140 print sd$(0,3);sd$(1,3)
[結果]
no
name
1Grapes
2Lemon
3Banana
SQLiteコマンドの基本的な使用法を示します。
詳細はSQLiteの専門資料を御覧ください。
SQL OPEN |
[機能] データベースを開きます。
[書式] SQL OPEN ファイル名
[説明]
当BasicでのSQLの場合、既存のDBを開く時、新規のDBを開く時は
どちらも SQL OPEN を使います。
最後は SQL
CLOSE でDBを閉じます。
データベースファイルは
data/data/and.bas/databases/ に格納されます。
SDカードとのやりとりは
copy コマンドかファイル操作アプリにて行なって下さい。
データベースの削除は kill
コマンドでこのフォルダの該当データベースファイルを削除して下さい。
例: kill
"data/data/and.bas/databases/test1.db"
[例]
sql open
test1.db
データベースアクセスは
data/data/and.bas/databases/ で行われます。
files"sql:"
でこのSQLフォルダの中のファイルが観覧できます。
フォルダ指定が無い時は
data/data/and.bas/databases/ にあるファイルが取り扱われます。
SDカードのDBファイルを取り扱う時はSDのパスをフル指定します。
その場合元のファイルは名前に'.bak'が付いたバックアップファイルが生成されます。
[例]
sql open
mnt/sdcard/and.bas/test2.db
データベースの削除は kill
コマンドでそのデータベースファイルを削除して下さい。
[例]
kill curdir$(2)+"test1.db"
'curdir$(2)はSQLのフォルダを示しています。
SQL CLOSE |
[機能] データベースを閉じます。
[書式] SQL CLOSE
[説明]
オープンしたDBは最後に閉じて下さい。
[例]
sql close
SQL CREATE TABLE |
[機能] テーブルを作成します。
[書式] CREATE TABLE テーブル名(項目名 データ型,
項目名 データ型型,...)
[説明]
[例]
sql create table table1(no int, name
text)
SQL INSERT INTO |
[機能] データの挿入。
[書式] SQL INSERT INTO テーブル名 VALUES
(データ, データ...)
[説明]
[例]
sql insert into table1 values
(1,'Grapes')
SQL SELECT |
[機能] データの選択、クエリー結果の出力。
[書式] SQL SELECT 項目名, 項目名... FROM
テーブル名 [WHERE 条件]
[説明]
全項目にする時は * を指定します。
[例]
sql select
no,name from table1
sql select * from
table1 where no<10
SQL UPDATE |
[機能] データの更新。
[書式] SQL UPDATE テーブル名 SET 項目名=データ
WHERE 条件
[説明]
[例]
sql
update table1 set name='Apple' where no=3
SQL DELETE |
[機能] データの削除。
[書式] SQL DELETE FROM テーブル名 WHERE
条件
[説明]
[例]
sql delete from table1 where no=1
SQLモードでは一部のコントロールコマンドが使用できます。
■SQLモードで使用できるコマンド。(関数は全て使用できます)
'(rem) let dim print input goto gosub return func
endfunc select case ex_sql
if-then-else for-next
while-wend repeat-until continue break data read restore
run end new list edit renum console load save files
kill copy font
変数、配列の代入では let の省略はできません。(例:let var=10)
SQLモードではラベルは使用できません。