2012-05-06 26 views
4

私は、(リモートデータベースを検索するのではなく)ローカルに格納される非常に単純なデータベースアプリケーションを作成しています。私はインターフェイスを設計するためのHTML/Javascriptが好きで、それらはクロスプラットフォームです(誰もがブラウザを持っています)ので、実際にフロントエンドとしてWebページを作成したいと思います。クライアントとサーバーとのやりとりは必要ありません。ネイティブプログラムではなく、ブラウザを使用してデータベースとやりとりできるようにしてください。ローカルSQLiteデータベースへのインタフェースとしてのHTML/JS

しかし、ブラウザからデータベースにアクセスするには、WebSQLまたはIndexedDBのようなものを使用するしかありません。しかし、これらの両方は、データベースファイル自体を管理するプロセスを抽象化し、どこかのユーザ設定に保存します。私はアプリケーションと一緒にデータベースファイル自体を配布したい。

要するに、HTML/Javascriptを使用してローカルのSQLiteデータベースファイルを変更する方法はありますか?それとも、HTMLは私がこの種のアプリケーションに使うべきツールではないのですか?

EDIT:possibly relevant

+0

Javascriptは、ローカルファイルに書き込むことができません。しかし、初めて値を格納するためにjsファイルを出荷することができます。 HTML/JSを使用して開発し、ファイルシステムにアクセスできるAdobe AIRを検討しましたか? –

+0

AIRとはあまり関係がありませんでしたが、私はそれを調べます。私は可能な限り依存関係を減らしたいと思いますが、純粋なHTML/JSでこれを行うことはできないと思います。 –

答えて

4

これは私がやってしまったものです:

hereに言及するように、ローカルWebサーバーを作成するためのPythonを使用することができます。 Thisチュートリアルでは、サーバーハンドラの基本的なインフラストラクチャを示します。 Python 3やChromeを使用してローカルページにアクセスするなど、いくつかの問題に対処する必要がありました。

マイGETハンドラ関数はこのように見てしまった:

def do_GET(self): 
    try: 
     self.send_response(200) 
     self.send_header('Content-type', 'text/html') 
     self.send_header('Access-Control-Allow-Origin', '*') 
     self.end_headers() 
     try: 
      fn = GETHANDLERS[self.path[1:]] 
      self.wfile.write(fn().encode("utf-8")) 
     except KeyError: 
      self.wfile.write(self.path.encode("utf-8")) 
     return 
    except: 
     self.send_error(404, 'File Not Found: {0}'.format(self.path)) 

GETHANDLERSが機能にマッピングする辞書のURLです - あなたはhttp://localhost/my_funcを訪問した場合、たとえば、GETHANDLERS['my_func']関数が呼び出されます。 URLに関数が存在しない場合、URLはちょうどエコーバックされます。

sqlite3モジュールを使用してローカルSQLiteデータベースを操作する関数を実装しました。ここでCategoriesテーブルですべてを一覧表示するクエリの例です:ユーザーは、その後、PythonのインストールWebページを開く前に、サーバーのスクリプトを実行するため

import sqlite3 

def get_categories(): 
    con = sqlite3.connect('my.db') 
    c = con.cursor() 
    c.execute('''SELECT * FROM Categories;''') 
    return [cat[0] for cat in c.fetchall()] 

GETHANDLERS["categories"] = get_categories 

は、ローカルアプリを使用するには、それが必要なのです。私はこれがかなり受け入れられると思います!

3

あなたは本当にただ、クライアント側のアプリケーションが必要な場合は、あなたが本当にHTML5のtehnologies(WebSQL、インデックスDB)を使用することを検討すべきである.A良い読書はここにある:html5 doctor。データベースをどこかにエクスポートするか、ユーザーがデータベースをエクスポートできるようにし、ユーザーがデータベースを再ロードするときにデータベースを再ロードする必要があります。例:export websql to a csv-file

+0

データベースをエクスポートする方法について多くの文書が見つかりましたが、CSVからインポートするには良い方法がありますか?その後、たとえば、アプリケーションが初めてロードされたときに、ローカルのCSVからブラウザのデータベースにすべてのデータをインポートできました。 –

+0

あなたはこのパーサーhttp://purbayubudi.wordpress.com/2008/11/09/csv-parser-using-javascript/を使ってみることができますが、簡単なhttp://というよりxmlを使ってデータベースをエクスポートしてインポートすることをお勧めします/www.w3schools.com/ajax/ajax_xmlfile.asp –

0

sqlite3コネクタを使用して、HTAアプリケーションからローカルデータベースファイルに接続できます。ここで

は、コネクタ(1ページに説明するようにDLLを登録する必要があります)

https://www.assembla.com/spaces/litex/documents

は、DLLは\リテックスの\ binフォルダにある(zipファイルにHTAをHTAデモアプリケーションを確認しています)

関連する問題