/* SQLite練習ツール SQLを書いて、最後に「go」って入れてからエンターキーを押すとSQLが実行されるソフト 返り値は右側のグリッドに表示されちゃうよ。 以下のような人にオススメな練習ツールです ・SQL勉強するのにサーバーや重い開発環境立ち上げるのかったるい ・SQLiteって何が出来て何が出来ないのかちょっと確かめたい ・データベースの実態がイマイチつかめない ・練習したいけど環境作るのマンドクセ。借りサーバーと通信するのもメンドクセ ・サーバーにSQL文送る前に動作チェックしたいの ・なでしこでSQLってはじめてしったんだけどナニコレ面白そう。 つまり僕のようにSQLに興味はあるけど概念ばかり勉強してもだるいから サーバー立てたり環境作る手間もすっ飛ばしてともかく自由にまさぐりたい って人のためのツールです。 初回起動時に練習用のデータベースを作るためのSQLが表示されるので それで作りたいときはその文の最後に「go」と書いてエンターキーを押してください。 すると内部で練習用のデータベースが作成されます。 テーブル名は「test」で、 「NO」、「name」、「postno」の要素を持ちます。 testテーブルが作成されているとこのSQLは表示されません。 要素に型定義してありマスが、SQLiteには型が無いそうですので 無視していただいてかまわんのです 後はタダひたすらその辺で拾ってきたSQL文で遊ぶだけです。ええ。 */ !APPタイトル=「SQLite練習ツール」 母艦のタイトルはAPPタイトル 母艦の背景色はウィンドウ背景色 メインLとはタブページ メインLに「クエリ」をタブ追加 メインLのレイアウトは「全体」 文章部とはメモ 文章部の親部品はメインL 文章部のレイアウトは「全体」 文章部の背景色は$333333 文章部の文字色は$cccccc/**/ ビューLとはタブページ ビューLに「実行結果」をタブ追加 ビューLのレイアウトは「右」 ビューLのWは200 ビューとはグリッド ビューの親部品はビューL ビューのレイアウトは「全体」//「右」 ビューのWは200 区切り1とはスプリッタ 区切り1のWは5 区切り1のレイアウトは「右」 //区切り1の位置は文章部の右側 メインステータスとはステータスバー ログLとはタブページ ログLに「実行ログとエラー」をタブ追加 ログLのレイアウトは「下」 ログLのHは100 SQLログとはメモ SQLログの親部品はログL SQLログのレイアウトは「全体」//「下」 SQLログのHは100 SQLログの編集はオフ SQLログの背景色はウィンドウ背景色 区切り2とはスプリッタ 区切り2のレイアウトは「下」 区切り2のHは5 「,mf,ファイル(&F) -,f0,新規,Ctrl+N,,SQLN -,fb2,- -,fc1,閉じる(&C),,,終わる ,me,編集(&E) -,e1,全て選択(&A),Ctrl+A,,AS ,mh,ヘルプ(&H) -,h1,{APPタイトル}について(&A),,,アバウト」をメニュー一括作成 メインステータス=「Ready...」 ●SQLN もし文章部が空でなければ 「現在編集中のSQL文がクリアされます。{\n}よろしいですか?」と二択 もしそれが1ならば 文章部は空 1を戻す ●SQLO メインステータス=「SQL文をファイルから読み込みます…。」 「*.sql;*.txt;」のファイル選択 ファイル候補とは文字列=それ もしそれが空でなければ SQLN もし文章部のテキストが空ならば ファイルバッファとは文字列 ファイルバッファへファイル候補を開く ファイルバッファ=文章部 メインステータス=「ファイルを開きました…。」 ●SQLS メインステータス=「編集中のSQL文をファイルへ保存します…。」 もし文章部が空でなければ 「*.sql」の「{今日の'/'を''に置換}{今の':'を''に置換}.sql」で保存ファイル選択 保存対象とは文字列=それ もし保存対象が空でなければ 文章部を保存対象へ保存 メインステータス=「保存完了…。」 違えば 「保存できるSQL文がありません。」という ●LOGS メインステータス=「ログをテキストとして保存します…。」 もしSQLログが空でなければ 保存対象とは文字列=「*.txt」の「SQL_LOG{今日の'/'を''に置換}{今の':'を''に置換}.sql」で保存ファイル選択 もし保存対象が空でなければ 文章部を保存対象へ保存 メインステータス=「保存完了…。」 違えば 「保存できるログがありません。」という ●AS 文章部の注目 文章部の全選択 文章部のキー離した時は もし文章部の押された仮想キーが13/*ENTER*/ならば メインステータス=「SQL文をチェックしています…。」 //最後の文字列が書いてある行をチェック 最終行入力内容とは文字列 文章部を反復 もし対象が空でなければ 最終行入力内容=対象 //最後の文字が「go」ならば実行 もし((最終行入力内容==「go」)||(最終行入力内容==「GO」))ならば メインステータス=「SQL文を実行しています…。」 文章部の有効はオフ 文章部=文章部の「{\n}go{\n}」を「{\n}」に置換 文章部=文章部の「{\n}GO{\n}」を「{\n}」に置換 文章部=文章部の「{\n}{\n}」を「{\n}」に置換 もし文章部が空ならば メインステータス=「実行内容が空ですよ」 違えば クッション=空 エラー監視 ビューのアイテムはDBハンドルで文章部をSQLITE実行 クッション=文章部 SQLログ=「******SQLite - {今日} {今} ******{~}{クッション}{~}{SQLログ}」 文章部は空 メインステータス=「SQL文が実行されました」 エラーならば BEEP エラーメッセージを反復 もし((対象で「SQLITE実行」を文字検索)!=0)ならば クッション=対象の「。」から「{\n}」まで範囲切り取る SQLログ=「******SQLite - {今日} {今} ******{~}[ERROR]{クッション}{~}{~}{SQLログ}」 メインステータス=「エラーがあったようです。」 文章部の有効はオン 文章部に注目 違えば メインステータス=「Ready...」 DBハンドル=0 母艦の閉じた時は DBハンドルのDB解放 DBハンドル=「test.db」をDB取得 エラー監視 DBハンドルで「SELECT * FROM test;」をSQLITE実行 文章部=「SELECT * FROM test;」 エラーならば 文章部=「CREATE TABLE test (id varchar(5) PRIMARY KEY,name varchar(20),no varchar(7)); INSERT INTO test VALUES('00001','sample1','1500001'); INSERT INTO test VALUES('00002','sample2','1500002'); INSERT INTO test VALUES('00003','sample3','1500004'); SELECT * FROM test;」 母艦の描画処理反映 文章部の注目 ●DB取得(Fを) Hとは整数=FをSQLITE開く Hを戻す ●DB解放(Hの) HのSQLITE閉じる ●アバウト 「{APPタイトル}{~}SQLをオフラインで練習するために作ったツールです。{\n}同じフォルダにあるtest.dbを利用します。ご注意ください。{~}{~}利用できるRDB:SQLite2.1{~}(c)2008 canot」という