私はこれが古いことを知っていますが、さあ、私の友人です。あなたはまさにそこにいました、ほんの少し微調整しました。GitHub の SQL.js ライブラリを使用しているかどうかはわかりませんが、ブラウザーのセキュリティ問題の多くを解決し、SQL 側の作業が脳にとってはるかに簡単になるため、使用してください。
ソースを作成していないか、UTF の問題がある場合は、例外がスローされます。これを一晩で書いたので、いくつかの関数しか実行していませんが、非同期プロセス中に SQLite の問題を防ぐためにコールバックが必要になると想定しています。SQLite または SQL.js ライブラリを使用するのはこれが初めてなので、まだわかりません。
重要!これはローカル ソリューションのみであり、高校の更衣室よりも露骨な脆弱性があります。これは、インターネットに公開されているものには絶対に使用しないでください。
これはすべて、関数内ではなく、クラスの先頭で宣言されています。複数のクエリを実行し、オブジェクトが大きくなりすぎた場合にオブジェクトのロード/アンロードのオーバーヘッドが発生しないようにするため、これは意図的なものです。
ソースの完全修飾パスに注意してください...相対パスは機能しませんでした。
var xhrLocal = new XMLHttpRequest();
xhrLocal.open('GET', 'http://localhost/mp3/data/media.sqlite', true);
xhrLocal.responseType = 'arraybuffer';
var localData;
xhrLocal.onload = function(e) {
var uInt8Array = new Uint8Array(this.response);
localData = new SQL.Database(uInt8Array);
};
xhrLocal.send();
この時点で、データベースは localData というオブジェクトにロードされ、どこからでもクエリを実行できます。これは、ジャンル情報を取得するために作成したクエリです。
function FillGenreLists() {
var sqlSel = 'SELECT * FROM GenreData';
var data = localData.exec(sqlSel);
var output = [];
$.each(data[0].values, function(key, value)
{
output.push('<option value="'+ value[0] +'">'+ value[1] +'</option>');
});
$('#selGenres').html(output.join(''));
}
SQL 呼び出しからの出力は通常、配列の配列です。それを変更することを心配する必要はありません。SQL 呼び出しの結果をコンソールに出力し、返されたフィールドと値に注意してください。そこから $.each を使用するだけです。コンテンツ。
これは別のクエリです。同じ前提ですが、SQL ステートメントを作成して MS SQL サーバーにプッシュし、ローカル コレクションにあるアーティストに関する FreeDB データを取得することを目的としています。
注: これはすべて、ローカルの sqlite テーブルにクエリを実行し、SQL を生成して、別の conn を使用して MS SQL にプッシュするか、ジェネリック プロシージャを利用することで、1 回の呼び出しで実行できますが、ここでは単純にしておきます。
function PrepareMSSQLFilteredFreeDBTables(StartLetter, EndLetter, TempTableName) {
var sqlSel = "SELECT * FROM ArtistData WHERE ArtistText BETWEEN '" + StartLetter + "' AND '" + EndLetter + "' ORDER BY ArtistText";
var data = localData.exec(sqlSel);
$('.array-cols').append('SELECT * INTO ' + TempTableName + ' FROM FreeDB WHERE DARTIST IN (');
var iLen = (data[0].values.length - 1);
$.each(data[0].values, function(a, b) {
var sRes;
if (a === iLen) { sRes = "'" + b[1].replace("'", "''") + "')"; }
else { sRes = "'" + b[1].replace("'", "''") + "', "; }
$('.array-cols').append(sRes);
});
}