JavaScript + SQlite について。

あらかじめ作成しておいた、SQliteのデータを、JavaScriptから
読むのは可能でしょうか。
ちなみに、JavaScriptkから新規に、SQliteのデータを作成するのは
可能です。
開発環境は、iPhone/Safari です。

回答の条件
  • 1人5回まで
  • 登録:2012/01/24 02:20:14
  • 終了:2012/01/31 02:25:02

ベストアンサー

id:TransFreeBSD No.2

TransFreeBSD回答回数668ベストアンサー獲得回数2682012/01/24 12:22:06

ポイント50pt

いくつか見てみましたが、拡張機能でも任意のデータベースファイルを指定することはできなさそうです。
なので、正攻法でデータベースファイルを直接インストールすることは出来なさそうですが、
間接的な方法と、正攻法ではない方法の2つ方法を考えてみました。
ただ、普通に考えたら前者を取ると思います。上手く作ればオンラインとオフラインのハイブリッドとかデータ更新とかもやりやすくなりますし。

初回にJSONやXMLのデータをClient-side database storageに流し込む

データファイルは拡張機能として同梱しても良いでしょうし、ネットからダウンロードしても良いかもしれません。
それを、初回のインストール作業として、テーブルが無ければテーブル作成と共に読み込んで流し込む。
プログレスバーか何かで明示的に行う方法もあれば、バックグラウンドで少しずつ行う方法もあるかもしれません。
http://d.hatena.ne.jp/os0x/20100610/1276119135
http://developer.apple.com/library/safari/#documentation/Tools/Conceptual/SafariExtensionGuide/ExtensionSettings/ExtensionSettings.html

SQLiteのライブラリを組み込んだプラグインを使う

javascriptでは無理な部分があるので、ネイティブコードで動くプラグインにSQLiteのライブラリを組み込んで、直接ファイルをコピーし、管理データベースを更新して、Client-side database storageとして登録してしまう。
もちろんこれは非正規な方歩ですので、不具合が発生する可能性がある、というよりマトモに動くかどうかもやってみなければ分からない所です。通常のsafariについては幾つか情報がありますが、iPhone版でも同じなのか検証する所からとなるでしょう。
http://hajimemasita.blogspot.com/2008/03/safari-31client-side-database-storage.html
https://github.com/steventroughtonsmith/MobileSafariPlugin

id:Himadeus

JavaScript + SQLite では、あらかじめ用意しておいたデータを読めないのが理解できました。今回は、あまり複雑な事をする余裕がないので、別に、data.js を作って、グローバル変数の、連想配列を用意して、データを入れておこうと思います。

データの性質的にはRDB向きだったのですが、Key-Valueに合うように、変更します。

2012/01/27 16:12:03

その他の回答(1件)

id:Cherenkov No.1

Cherenkov回答回数1503ベストアンサー獲得回数4932012/01/24 04:00:25

id:Himadeus

Client-side database storage ですね。
これだと、クライアント側でデータ生成して保存する方法ですね。
あらかじめ、データベースファイルを作っておいて、読む方法を知りたいのです。
例えば、オフラインでも使える英和辞典のようなiPhoneアプリをJavaScriptで作成、などを考えています。

2012/01/24 07:32:24
id:Cherenkov

javascriptだけでというのは分からないです。すいません。
読み込むところはバックエンドでやったほうが楽な気がします。

2012/01/24 09:00:13
id:TransFreeBSD No.2

TransFreeBSD回答回数668ベストアンサー獲得回数2682012/01/24 12:22:06ここでベストアンサー

ポイント50pt

いくつか見てみましたが、拡張機能でも任意のデータベースファイルを指定することはできなさそうです。
なので、正攻法でデータベースファイルを直接インストールすることは出来なさそうですが、
間接的な方法と、正攻法ではない方法の2つ方法を考えてみました。
ただ、普通に考えたら前者を取ると思います。上手く作ればオンラインとオフラインのハイブリッドとかデータ更新とかもやりやすくなりますし。

初回にJSONやXMLのデータをClient-side database storageに流し込む

データファイルは拡張機能として同梱しても良いでしょうし、ネットからダウンロードしても良いかもしれません。
それを、初回のインストール作業として、テーブルが無ければテーブル作成と共に読み込んで流し込む。
プログレスバーか何かで明示的に行う方法もあれば、バックグラウンドで少しずつ行う方法もあるかもしれません。
http://d.hatena.ne.jp/os0x/20100610/1276119135
http://developer.apple.com/library/safari/#documentation/Tools/Conceptual/SafariExtensionGuide/ExtensionSettings/ExtensionSettings.html

SQLiteのライブラリを組み込んだプラグインを使う

javascriptでは無理な部分があるので、ネイティブコードで動くプラグインにSQLiteのライブラリを組み込んで、直接ファイルをコピーし、管理データベースを更新して、Client-side database storageとして登録してしまう。
もちろんこれは非正規な方歩ですので、不具合が発生する可能性がある、というよりマトモに動くかどうかもやってみなければ分からない所です。通常のsafariについては幾つか情報がありますが、iPhone版でも同じなのか検証する所からとなるでしょう。
http://hajimemasita.blogspot.com/2008/03/safari-31client-side-database-storage.html
https://github.com/steventroughtonsmith/MobileSafariPlugin

id:Himadeus

JavaScript + SQLite では、あらかじめ用意しておいたデータを読めないのが理解できました。今回は、あまり複雑な事をする余裕がないので、別に、data.js を作って、グローバル変数の、連想配列を用意して、データを入れておこうと思います。

データの性質的にはRDB向きだったのですが、Key-Valueに合うように、変更します。

2012/01/27 16:12:03

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません