6

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

ただし、ブラウザーからデータベースにアクセスする唯一の方法は、WebSQL や IndexedDB などを使用することです。ただし、どちらもデータベース ファイル自体を管理するプロセスを抽象化し、ユーザー設定のどこかに保存します。データベースファイル自体をアプリと一緒に配布したい。

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

編集: おそらく関連

4

3 に答える 3

4

これは私がやったことです:

ここで参照されているように、Python を使用してローカル Web サーバーを作成できます。このチュートリアルでは、サーバー ハンドラーの基本的なインフラストラクチャを提供します。おそらく 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))

は、URL を関数にマッピングする辞書です。GETHANDLERSたとえば、 にアクセスするhttp://localhost/my_funcと、GETHANDLERS['my_func']関数が呼び出されます。URL に関数が存在しない場合、URL は単にエコー バックされます。

sqlite3モジュールを使用して、ローカルの SQLite データベースを操作する関数を実装しました。Categoriesテーブル内のすべてを一覧表示するクエリの例を次に示します。

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

ローカル アプリを使用するには、ユーザーが Python をインストールし、Web ページを開く前にサーバー スクリプトを実行する必要があります。これはかなり許容範囲だと思います!

于 2012-05-07T22:07:09.113 に答える
3

クライアント側のアプリケーションだけが本当に必要な場合は、HTML5 技術 (WebSQL、インデックス付き DB) の使用を検討する必要があります。データベースをどこかにエクスポートするか、ユーザーにデータベースをエクスポートさせ、ユーザーがページをリロードしたときにデータベースを再接続する必要があります。例: websql を csv ファイルにエクスポートします

于 2012-05-06T12:00:45.687 に答える
1

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

これがコネクタです(ページで説明されているようにdllを登録する必要があります)

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

zipファイルのHTAデモアプリを確認します(DLLは\ litex \ binフォルダーにあり、htaはスクリプトフォルダーにあります。)

于 2013-01-18T00:04:10.887 に答える