JSON ( JavaScript Object Notation )
JSON / AjaSQL test3
★AjaSQLの最新テストバージョンはこちら→ AjaSQL


 AjaSQL test2のテスト項目が増えてきて、レスポンスの表示エリアがスクロールしないと見えなくなってきたので、少し修正。結果データをフロートDIVへ流し込み、ついでにドラックも出来るようにしました。

 
使用可能なブラウザ
 Win   n7 f1 m1 e6 o8,
 Mac   n7 f1 m1 s1 s2 ,
 Linux n7 f1 m1 k3.4  
使えないブラウザ
 Win   n4 o7,
 Mac   n4 e4.5 e5,
 Linux n4 
未確認ブラウザ
 Win   e4 e5
 Mac   ,
 Linux ,

 Ajaxはバックエンドでサーバーと通信できるわけですから、SQL処理に使うのは必然?という気がしてます。というわけ(自分の思いこみ)で、自分が欲しい機能を持った、フリーでAjaxなSQLツールを作ってみようと思います。 AjaSQL(Asynchronous JavaScript and SQL)ってな感じです。

 目標 : たとえば、、、
var sql="select * from table1 ;"
sendSQL(sql)
 のように送信すると、下記のような2次元配列で受け取れます。( 0行目にはフィールド(カラム)名リスト、1行目以降にデータが入ります。 )
[ 
	['id','name','msg','date','ip'],
	['8','aa"a','test2','123','2005.06.01']
]
 下記のようなオブジェクトで渡すことも考えましたが、すべての行にカラム名が入り重複するのが無駄なのでやめました。
{
	"id":"1",
	"name":"test",
	"msg":"test",
	"date":2005.05.04 13:16:30"
},
{
	"id":"2",
	"name":"aaaa",
	"msg":"ajax1",
	"date":2005.06.01 13:16:30"
}




SQLサンプル

このサンプルDBは、SQLiteで作りました
[.schema] テーブル名は、mydb1、構造は下記の通り。
create table mydb1(
	id integer primary key,
	name text ,
	msg text ,
	date text,
	ip text
);

現在使用できるのは、selectとinsert、update。制限しなければ、なんでも使えますが、使うsyntaxを選べるようにする予定です。
今のところ、insertを制限したい時は、現状DBファイルのパーミッションを書き込み不可にします。が、別にユーザー認証の仕組みが必要だなぁ。


Where節
sendSQL("select * from mydb1 where id = 8 ;")
sendSQL("select * from mydb1 where msg = 'test2' ;")
sendSQL("select * from mydb1 where name = 'あいう' ;")

Order(昇順asc/降順desc)
sendSQL("select * from mydb1 where msg = 'test2' order by id desc;")

関数(各SQLで使える関数はすべて使えます)
count() 行数 sendSQL("select count(id) from mydb1 ;")
sum() 合計 sendSQL("select *,sum(id) from mydb1 ;")
avg() 平均 sendSQL("select avg(id) from mydb1 ;")
max() 最大 sendSQL("select max(id) from mydb1 ;")
min() 最小 sendSQL("select min(id) from mydb1 ;")
length() 文字数 sendSQL("select length(msg) from mydb1 where id = 8;")
substr() 文字抽出 sendSQL("select msg,substr(msg,0,3) from mydb1 where id =
random() 乱数 sendSQL("select random() ;")
round() 四捨五入 sendSQL("select round(10.12345,3) ;")

AjaSQL専用関数

書き込み(insert文)
Nmae: / Msg:
sendSQL("insert into mydb1 values( Null ,'"+name+"', '"+msg+"' ,'#SERVER_NOW#', '');")

検索
Nmae:
sendSQL("select * from mydb1 where name = '"+name2+"' ;")

更新(update文)
Msg:
sendSQL("update mydb1 set msg = '"+msg2+"' where id = 8 ;")

更新したかどうかを確認
sendSQL("select * from mydb1 where id = 8 ;")




	

【作業用掲示板】