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を付ける必要がありません。
  全てSQLコマンドとして解釈されます。(編集実行コマンドは使用できます)
  SQLモードは EX_SQL ,OFF を実行する、メニューよりモード切り替えを行う
  のどちらかで抜けることができます。

 [例] 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 "data/data/and.bas/databases/test1.db"
    kill "mnt/sdcard/and.bas/test2.db"


  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モードで使用できるコマンドと関数。
  '(注釈) let dim if-then-else for-next goto print input data read restore
  files kill copy load save run end new list edit renum console ex_sql
  int abs sgn val str$ len instr mid$

 変数、配列の代入では let の省略はできません。(例:let var=10)
 goto文ではラベルは使用できません。
 当アプリのSQLモードとアプリ SQL-mini はソースコードの相互互換性があります。
 SQL-miniではカレントフォルダが一部異なります。