2011-06-01 11 views
55

¿Es posible hacer una extensión de Chrome que interactúe con la base de datos sqlite de forma similar a la extensión de Firefox? ¿Podrías darme algún consejo o un enlace donde encontrar más información sobre el desarrollo de la extensión de Chrome interactuando con sqlite?Sqlite en cromo

gracias

Respuesta

12

Chrome soporta WebDatabase API (que es accionado por SQLite), pero parece W3C detuvo su development.

+0

¿Puedo conectarme desde chrome a mi base de datos sqlite y hacer algunas selecciones, insertar, actualizar, eliminar declaraciones? – xralf

+0

@xralf Si se refiere a la instalación de sqlite externa, entonces no. Chrome viene con sqlite incorporado que puedes usar (crear base de datos, seleccionar, etc.) – serg

24

Puede usar Web SQL API que es una base de datos SQLite ordinaria en su navegador y puede abrirla/modificarla como cualquier otra base de datos SQLite, por ejemplo con Lita.

Chrome ubica las bases de datos automáticamente de acuerdo con los nombres de dominio o ID de extensión. Hace unos meses publiqué en mi blog un breve artículo en how to delete Chrome's database porque cuando pruebas algunas funciones es bastante útil.

+0

Me gustaría usar la misma base de datos sqlite de firefox y chrome. ¿Es posible con Web SQL API? – xralf

+1

Definitivamente no con Web SQL API.Tal vez con NPAPI (http://code.google.com/chrome/extensions/npapi.html) pero eso sería muy difícil. ¿Por qué necesita compartir la misma base de datos? Tal vez podrías usar alguna base de datos externa (como Google App Engine) y tus extensiones (para Chrome y Firefox) se comunicarían con ella ... solo una idea :). – martin

+0

¿Sería posible configurar enlaces de nivel de sistema de archivos entre las bases de datos? Sería un experimento interesante de probar. – technomalogical

17

Es posible que pueda hacer uso de sql.js.

sql.js es un puerto de SQLite a JavaScript, al compilar el código SQLite C con Emscripten. sin enlaces C o compilación de nodos-gyp aquí.

<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 col1 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.js es un solo archivo JavaScript y se trata de 1.5MiB de tamaño actualmente. Si bien esto podría ser un problema en una página web, el tamaño probablemente sea aceptable para una extensión.

+1

se debe tener en cuenta que esta es la única oferta hasta el momento que potencialmente se conecta a DB existentes – dandavis

3

No estoy muy seguro de si quiere decir '¿Puedo utilizar SQLite (WebSQL) en cromo' o '¿Puedo utilizar SQLite (WebSQL) en Firefox', por lo tanto voy a responder:

Tenga en cuenta que WebSQL no es un canal de acceso completo en una base de datos .sqlite. Es WebSQL. No podrá ejecutar algunas consultas específicas como VACUUM

Aunque es increíble para Create/Read/Update/Delete. Hice una pequeña biblioteca que ayuda con todos los detalles molestos como crear tablas y consultas, y proporciona un pequeño patrón ORM/ActiveRecord con relaciones y todo, y una enorme pila de ejemplos que deberían comenzar en un instante, you can check that here

Además, tenga en cuenta que si desea construir una extensión de FireFox: Their extension format is about to change. Asegúrese de querer invertir el tiempo dos veces.

Si bien la especificación WebSQL ha quedado obsoleta durante años, incluso ahora en 2017 todavía no parece que se eliminará de Chrome en el tiempo previsible. They are tracking usage statistics and there are still a large number of chrome extensions and websites out there in the real world implementing the spec.