سؤال

أفضل التوصيات للوصول إلى قواعد بيانات sqlite ومعالجتها من JavaScript.

هل كانت مفيدة؟

المحلول

حسنًا، إذا كنت تعمل على جافا سكريبت من جانب العميل، فأعتقد أنك لن يحالفك الحظ...تميل المتصفحات إلى وضع الحماية في بيئة جافا سكريبت بحيث لا تتمكن من الوصول إلى الجهاز بأي نوع من السعة العامة مثل الوصول إلى قاعدة البيانات.

إذا كنت تتحدث عن قاعدة بيانات SQLite على الخادم الذي يتم الوصول إليه من طرف العميل، فيمكنك إعداد حل AJAX الذي يستدعي بعض التعليمات البرمجية من جانب الخادم للوصول إليها.

إذا كنت تتحدث عن Rhino أو أي جافا سكريبت آخر من جانب الخادم، فيجب عليك النظر في وصول واجهة برمجة التطبيقات (API) للغة المضيفة إلى SQLite (مثل JDBC لـ Rhino).

ربما وضح سؤالك أكثر ...؟

نصائح أخرى

هناك مشروع يسمى sql.js وهو منفذ SQLite في JavaScript.

sql.js هو منفذ SQLite إلى JavaScript، عن طريق تجميع كود SQLite C باستخدام Emscripten.

بانوراما لحلول جافا سكريبت SQLite

في المتصفح

إذا كنت تريد الوصول إلى قاعدة بيانات SQLite من داخل متصفح الويب، فليس لديك الكثير من الحلول.

sql.js

كانت مكتبة SQLite C استدار إلى جافا سكريبت استخدام emscripten.بدأ الميناء تحت اسم sql.js بقلم ألون زكاي (وهو أيضًا مؤلف كتاب emscripten).أنا المشرف الحالي على هذه المكتبة.

واجهة برمجة التطبيقات تبدو كالتالي:

<script src='js/sql.js'></script>
<script>
    //Create the database
    var db = new SQL.Database();
    // Run a query without reading the results
    db.run("CREATE TABLE test (col1, col2);");
    // Insert two rows: (1,111) and (2,222)
    db.run("INSERT INTO test VALUES (?,?), (?,?)", [1,111,2,222]);

    // Prepare a statement
    var stmt = db.prepare("SELECT * FROM test WHERE a BETWEEN $start AND $end");
    stmt.getAsObject({$start:1, $end:1}); // {col1:1, col2:111}

    // Bind new values
    stmt.bind({$start:1, $end:2});
    while(stmt.step()) { //
        var row = stmt.getAsObject();
        // [...] do something with the row of result
    }
</script>

SQL على شبكة الإنترنت

بدأ W3C العمل على واجهة برمجة التطبيقات الأصلية لتنفيذ SQL داخل المتصفح، والتي تسمى مزود الويب.مثال على استخدام واجهة برمجة التطبيقات تلك:

var db = openDatabase('mydb', '1.0', 'my first database', 2 * 1024 * 1024);
db.transaction(function (tx) {
  tx.executeSql('CREATE TABLE IF NOT EXISTS foo (id unique, text)');
  tx.executeSql('INSERT INTO foo (id, text) VALUES (1, "synergies")');
});

ومع ذلك، فقد تم المشروع متروك.وبالتالي فهو غير مدعوم على نطاق واسع.يرى: http://caniuse.com/sql-storage

في العقدة

إذا كتبت جافا سكريبت من جانب العميل، في العقدة، فلديك المزيد من الخيارات.يرى: https://www.npmjs.org/search?q=sqlite .

عقدة sqlite3

إذا كان لديك سلسلة أدوات تجميع، ولا تهتم بالاضطرار إلى تجميع تطبيقك لمنصات مختلفة (أو استهداف منصة واحدة فقط)، فإنني أنصحك باستخدام node-sqlite3.إنه سريع (أسرع بكثير من sql.js)، يحتوي على واجهة برمجة تطبيقات كاملة ووثائق جيدة.مثال على API هو كما يلي:

var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database(':memory:');

db.serialize(function() {
  db.run("CREATE TABLE lorem (info TEXT)");

  var stmt = db.prepare("INSERT INTO lorem VALUES (?)");
  for (var i = 0; i < 10; i++) {
      stmt.run("Ipsum " + i);
  }
  stmt.finalize();

  db.each("SELECT rowid AS id, info FROM lorem", function(err, row) {
      console.log(row.id + ": " + row.info);
  });
});

db.close();

sql.js

نعم مجددا. sql.js يمكن استخدامها من العقدة.هذا هو الحل إذا كنت تريد تطبيق جافا سكريبت خالصًا.ومع ذلك، سيكون أبطأ من الحل السابق.

هنا مثال لكيفية الاستخدام sql.js من العقدة:

var fs = require('fs');
var SQL = require('sql.js');
var filebuffer = fs.readFileSync('test.sqlite');

db.run("INSERT INTO test VALUES (?,?,?)", [1, 'hello', true]);  -- corrected INT to INTO


var data = db.export();
var buffer = new Buffer(data);
fs.writeFileSync("filename.sqlite", buffer);

جوجل جيرز يحتوي على قاعدة بيانات sqlite مدمجة - ولكنك ستحتاج إلى التأكد من قيام الأشخاص بتثبيتها إذا كنت تخطط للاعتماد عليها.

اعتمادًا على ظروفك، قد تتمكن من فرض التثبيت، وإلا فيجب عليك التعامل معه على أنه من الجيد الحصول عليه، ولكن مع تدهور بسيط بحيث يظل الموقع يعمل إذا لم يتم تثبيته.

إذا كنت تتطلع إلى الوصول إلى قواعد بيانات SQLite على المتصفح (على سبيل المثال.جانب العميل) ستحتاج إلى متصفحك لدعمه.يمكنك فعل ذلك باستخدام SpiderApe http://spiderape.sourceforge.net/plugins/sqlite/ والذي يفترض أن المتصفح يعتمد على Mozilla (أي.مع دعم SQLite).ستظل بحاجة إلى السماح بالوصول إلى المكتبات الأساسية ( http://www.mozilla.org/projects/security/components/signed-scripts.html )

إذا كنت تبحث عن إمكانية الوصول من جانب الخادم من برامج Javascript إلى قواعد بيانات SQLite، فهناك العديد من الخيارات:JSDB هو واحد http://www.jsdb.org/ ;JSEXT آخر http://jsext.sourceforge.net/ ;وjslibs آخر http://code.google.com/p/jslibs/

-- إم في

ال sql.js ستمكنك المكتبة من استدعاء استعلامات SQL من جانب العميل.باستخدام libray، يمكنك بسهولة دفق البيانات بأكملها بين الخادم والعميل عن طريق استدعاء .open(data) و .exportData().هذا مفيد جدًا.

بالإضافة إلى ذلك، يحتوي HTML5 على قدرات التخزين, ولكن كمعيار تكنولوجي جديد، لا يمكنك افتراض أن جميع العملاء سيدعمون ذلك.

كرسي حديقة يعد خيارًا جيدًا جدًا إذا لم تكن عالقًا في لغة SQL، لأنه يوفر طريقة سهلة لاستخدام أسلوب المفتاح/القيمة.تقدم هاتان المكتبتان حلاً كاملاً للعمل مع قاعدة بيانات SQL من جانب العميل.

مكتبة تخزين جيدة أخرى هي com.jstorage.ويمكن استخدامه لحفظ البيانات من "sql.js" على العميل.وهو يدعم مجموعة كبيرة ومتنوعة من المتصفحات (بما في ذلك متصفحات الهاتف المحمول، وIE7 وIE7!)، كما أنه ينجو من أعطال المتصفح.

إذا كنت تقوم بتشغيل البرامج النصية ذات الامتيازات في Windows (إما في HTA أو WSH)، فيمكنك الوصول إلى مصادر بيانات ODBC باستخدام ActiveXObject "ADODB.Recordset".

إذا كنت تتحدث عن جانب العميل على صفحة ويب، فإن المنشور أعلاه يتعلق بما يلي:Google Gears هو أفضل رهان لك.

يمكنك تنفيذ ذلك باستخدام XUL API على مكدس mozilla Firefox.وهذا بعض البرنامج التعليمي حول هذا الموضوع:http://www.arashkarimzadeh.com/articles/10-xul/25-sqlite-api-for-xul-application-using-javascript.html

على ماك؟ألقِ نظرة على JSTalk الخاص بـ Gus Meuller، والذي يستفيد من Scripting Bridge وJSCocoa من Patrick Geiller.

يتحدث Gus تحديدًا عن دعم Sqlite هنا: http://gusmueller.com/blog/archives/2009/03/jstalk_extras.html ...يعمل بشكل رائع.

JayData يوفر أيضًا مجموعة أدوات للعمل مع sqLite/webSql باستخدام JavaScript.ستحتاج إلى متصفح أو Rhine أو Nodejs لتشغيل الأمر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top