AppleScript から SQLite3 を使う

どうやって AppleScript から SQLite3 を使おうかと思ったんですが、よく考えなくても [cci_AppleScript]do shell script[/cci] で一発でした。


on sqlite3_exec(sql)
do shell script "echo " & quoted form of sql & " | sqlite3 ~/test.db"
end sqlite3_exec

というわけで、テスト。

on sqlite3_exec(sql)
do shell script "echo " & quoted form of sql & " | sqlite3 ~/test.db"
end sqlite3_exec

do shell script "rm -f ~/test.db"

set sql to "
CREATE TABLE users (
id INTEGER NOT NULL PRIMARY KEY,
name TEXT NOT NULL,
sex CHAR(1)
);"

my sqlite3_exec(sql)
my sqlite3_exec(".schema")

set sql to "
BEGIN;
INSERT INTO users(name, sex) VALUES('taro', 'M');
INSERT INTO users(name, sex) VALUES('jiro', 'M');
INSERT INTO users(name, sex) VALUES('hanako', 'F');
END;"
my sqlite3_exec(sql)

set sql to "
BEGIN;
INSERT INTO users(name, sex) VALUES('saburo', 'M');
INSERT INTO users(name, sex) VALUES('shiro', 'M');
ROLLBACK;"
my sqlite3_exec(sql)

(*
my sqlite3_exec("BEGIN;")
set sql to "INSERT INTO users(name, sex) VALUES('goro', 'M');"
my sqlite3_exec(sql)
my sqlite3_exec("ROLLBACK;") -- error!
*)

set sql to "SELECT * FROM users;"
my sqlite3_exec(sql)

返された値

tell current application
do shell script "rm -f ~/test.db"
--> ""
do shell script "echo '
CREATE TABLE users (
id INTEGER NOT NULL PRIMARY KEY,
name TEXT NOT NULL,
sex CHAR(1)
);' | sqlite3 ~/test.db"
--> ""
do shell script "echo '.schema' | sqlite3 ~/test.db"
--> "CREATE TABLE users (
id INTEGER NOT NULL PRIMARY KEY,
name TEXT NOT NULL,
sex CHAR(1)
);"
do shell script "echo '
BEGIN;
INSERT INTO users(name, sex) VALUES('\\''taro'\\'', '\\''M'\\'');
INSERT INTO users(name, sex) VALUES('\\''jiro'\\'', '\\''M'\\'');
INSERT INTO users(name, sex) VALUES('\\''hanako'\\'', '\\''F'\\'');
END;' | sqlite3 ~/test.db"
--> ""
do shell script "echo '
BEGIN;
INSERT INTO users(name, sex) VALUES('\\''saburo'\\'', '\\''M'\\'');
INSERT INTO users(name, sex) VALUES('\\''shiro'\\'', '\\''M'\\'');
ROLLBACK;' | sqlite3 ~/test.db"
--> ""
do shell script "echo 'SELECT * FROM users;' | sqlite3 ~/test.db"
--> "1|taro|M
2|jiro|M
3|hanako|F"
end tell
結果:
"1|taro|M
2|jiro|M
3|hanako|F"

にほんブログ村 ライフスタイルブログ 薪ストーブ暮らしへ
にほんブログ村 ライフスタイルブログ 薪ストーブ暮らしに参加しています。 励みになりますので、足あとがわりに、ランクアップにご協力下さい。

Leave a Reply