• Domingo 22 de Diciembre de 2024, 13:01

Autor Tema:  Aplicacion html5+sqlite en 3 capas  (Leído 13083 veces)

Thanatos-chan

  • Miembro MUY activo
  • ***
  • Mensajes: 136
  • Nacionalidad: do
    • Ver Perfil
Aplicacion html5+sqlite en 3 capas
« en: Miércoles 22 de Agosto de 2012, 02:05 »
0
Ondas,

Estoy haciendo una aplicacion en html5+sqlite, y me entra la pregunta porque todos los site que encuentro tienen el javascript pegado como script en el mismo archivo.

Consulta:  alguien ya ha tenido experiencia con aplicaciones sqlite que me recomiende un esquema de trabajo?

actualmente estoy usando phonegap+html5+jquery+sqlite para hacer una app mi tablet

aqui el ejemplo normalito que aparece en google.

mi pregunta es si puedo aislar toda la funcionalidad sqlite en un archivo  digamos myappsqlite.js y invocarlo desde la aplicacion.

Gracias.

Código: HTML
  1.         <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  4. <title>SQL Storage</title>
  5.   <body>    
  6.    <br/><br/>
  7.     <div align="center">
  8.      <input type="hidden" id="id"/>
  9.      First name:<input type="text" id="firstName"/><br/>
  10.      Last name:<input type="text" id="lastName"/><br/>
  11.      Phone: <input type="text" id="phone"/><br/>
  12.      <button onClick="resetForm()">Reset Form</button>
  13.      <button onClick="updateRecord()">Update</button>
  14.      <button onClick="insertRecord()">Insert</button>
  15.         <button onClick="dropTable()">Drop Table</button>
  16.      <div id="results"></div>
  17.     </div>
  18.   </body>
  19.  
  20.     <script>
  21.  var results = document.getElementById('results');
  22.  var id = document.getElementById('id');
  23.  var firstName = document.getElementById('firstName');  
  24.  var lastName = document.getElementById('lastName');  
  25.  var phone = document.getElementById('phone');
  26.    
  27.  var createStatement = "CREATE TABLE IF NOT EXISTS Contacts (id INTEGER PRIMARY KEY AUTOINCREMENT, firstName TEXT, lastName TEXT, phone TEXT)";
  28.  var selectAllStatement = "SELECT * FROM Contacts";
  29.  var insertStatement = "INSERT INTO Contacts (firstName, lastName, phone) VALUES (?, ?, ?)";
  30.  var updateStatement = "UPDATE Contacts SET firstName = ?, lastName = ?, phone = ? WHERE id = ?";
  31.  var deleteStatement = "DELETE FROM Contacts WHERE id=?";
  32.  var dropStatement = "DROP TABLE Contacts";
  33.  
  34.  var db = openDatabase("AddressBook", "1.0", "Address Book", 200000);
  35.  var dataset;
  36.  createTable();
  37.  
  38.       function onError(tx, error) {
  39.         alert(error.message);
  40.       }
  41.      
  42.       function showRecords() {
  43.         results.innerHTML = '';
  44.         db.transaction(function(tx) {
  45.           tx.executeSql(selectAllStatement, [], function(tx, result) {
  46. dataset = result.rows;
  47.             for (var i = 0, item = null; i < dataset.length; i++) {
  48.              item = dataset.item(i);
  49.              results.innerHTML +=
  50.                  '<li>' + item['lastName'] + ' , ' + item['firstName'] + ' <a href="#" onclick="loadRecord('+i+')">edit</a>  ' +  
  51.  '<a href="#" onclick="deleteRecord('+item['id']+')">delete</a></li>';
  52. }
  53.           });
  54.         });
  55.       }
  56.      
  57.       function createTable() {
  58.         db.transaction(function(tx) {
  59.           tx.executeSql(createStatement, [], showRecords, onError);
  60.         });
  61.       }
  62.      
  63.       function insertRecord() {
  64.         db.transaction(function(tx) {
  65.           tx.executeSql(insertStatement, [firstName.value, lastName.value, phone.value], loadAndReset, onError);
  66.         });
  67.       }
  68.      
  69.  function loadRecord(i) {
  70. var item = dataset.item(i);
  71.         firstName.value = item['firstName'];
  72. lastName.value = item['lastName'];
  73. phone.value = item['phone'];
  74. id.value = item['id'];
  75.       }
  76.  
  77.       function updateRecord() {
  78.         db.transaction(function(tx) {
  79.           tx.executeSql(updateStatement, [firstName.value, lastName.value, phone.value, id.value], loadAndReset, onError);
  80.         });
  81.       }
  82.      
  83.       function deleteRecord(id) {
  84.         db.transaction(function(tx) {
  85.           tx.executeSql(deleteStatement, [id], showRecords, onError);
  86.         });
  87. resetForm();
  88.       }
  89.        
  90.       function dropTable() {
  91.         db.transaction(function(tx) {
  92.           tx.executeSql(dropStatement, [], showRecords, onError);
  93.         });
  94. resetForm();
  95.       }
  96.  
  97.  function loadAndReset(){
  98.  resetForm();
  99.  showRecords();
  100.  }
  101.  
  102.  function resetForm(){
  103. firstName.value = '';
  104. lastName.value = '';
  105. phone.value = '';
  106. id.value = '';
  107.  }
  108.     </script>
  109. </html>
  110.  
  111.  
« última modificación: Miércoles 22 de Agosto de 2012, 02:07 por Thanatos-chan »
Que es un genio???? yo superare a un genio con trabajo duro, y eso es todo.

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re:Aplicacion html5+sqlite en 3 capas
« Respuesta #1 en: Miércoles 22 de Agosto de 2012, 04:51 »
0
Solo separalo en 2 archivos
Código: HTML
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  4. <title>SQL Storage</title>
  5.   <body>    
  6.    <br/><br/>
  7.     <div align="center">
  8.      <input type="hidden" id="id"/>
  9.      First name:<input type="text" id="firstName"/><br/>
  10.      Last name:<input type="text" id="lastName"/><br/>
  11.      Phone: <input type="text" id="phone"/><br/>
  12.      <button onClick="resetForm()">Reset Form</button>
  13.      <button onClick="updateRecord()">Update</button>
  14.      <button onClick="insertRecord()">Insert</button>
  15.         <button onClick="dropTable()">Drop Table</button>
  16.      <div id="results"></div>
  17.     </div>
  18.   </body>
  19.  
  20.     <script type="text/javascript" src="myappsqlite.js">
  21.     </script>
  22. </html>
  23.  
Código: Javascript
  1.  var results = document.getElementById('results');
  2.  var id = document.getElementById('id');
  3.  var firstName = document.getElementById('firstName');  
  4.  var lastName = document.getElementById('lastName');  
  5.  var phone = document.getElementById('phone');
  6.    
  7.  var createStatement = "CREATE TABLE IF NOT EXISTS Contacts (id INTEGER PRIMARY KEY AUTOINCREMENT, firstName TEXT, lastName TEXT, phone TEXT)";
  8.  var selectAllStatement = "SELECT * FROM Contacts";
  9.  var insertStatement = "INSERT INTO Contacts (firstName, lastName, phone) VALUES (?, ?, ?)";
  10.  var updateStatement = "UPDATE Contacts SET firstName = ?, lastName = ?, phone = ? WHERE id = ?";
  11.  var deleteStatement = "DELETE FROM Contacts WHERE id=?";
  12.  var dropStatement = "DROP TABLE Contacts";
  13.  
  14.  var db = openDatabase("AddressBook", "1.0", "Address Book", 200000);
  15.  var dataset;
  16.  createTable();
  17.  
  18.       function onError(tx, error) {
  19.         alert(error.message);
  20.       }
  21.      
  22.       function showRecords() {
  23.         results.innerHTML = '';
  24.         db.transaction(function(tx) {
  25.           tx.executeSql(selectAllStatement, [], function(tx, result) {
  26. dataset = result.rows;
  27.             for (var i = 0, item = null; i < dataset.length; i++) {
  28.              item = dataset.item(i);
  29.              results.innerHTML +=
  30.                  '<li>' + item['lastName'] + ' , ' + item['firstName'] + ' <a href="#" onclick="loadRecord('+i+')">edit</a>  ' +  
  31.  '<a href="#" onclick="deleteRecord('+item['id']+')">delete</a></li>';
  32. }
  33.           });
  34.         });
  35.       }
  36.      
  37.       function createTable() {
  38.         db.transaction(function(tx) {
  39.           tx.executeSql(createStatement, [], showRecords, onError);
  40.         });
  41.       }
  42.      
  43.       function insertRecord() {
  44.         db.transaction(function(tx) {
  45.           tx.executeSql(insertStatement, [firstName.value, lastName.value, phone.value], loadAndReset, onError);
  46.         });
  47.       }
  48.      
  49.  function loadRecord(i) {
  50. var item = dataset.item(i);
  51.         firstName.value = item['firstName'];
  52. lastName.value = item['lastName'];
  53. phone.value = item['phone'];
  54. id.value = item['id'];
  55.       }
  56.  
  57.       function updateRecord() {
  58.         db.transaction(function(tx) {
  59.           tx.executeSql(updateStatement, [firstName.value, lastName.value, phone.value, id.value], loadAndReset, onError);
  60.         });
  61.       }
  62.      
  63.       function deleteRecord(id) {
  64.         db.transaction(function(tx) {
  65.           tx.executeSql(deleteStatement, [id], showRecords, onError);
  66.         });
  67. resetForm();
  68.       }
  69.        
  70.       function dropTable() {
  71.         db.transaction(function(tx) {
  72.           tx.executeSql(dropStatement, [], showRecords, onError);
  73.         });
  74. resetForm();
  75.       }
  76.  
  77.  function loadAndReset(){
  78.  resetForm();
  79.  showRecords();
  80.  }
  81.  
  82.  function resetForm(){
  83. firstName.value = '';
  84. lastName.value = '';
  85. phone.value = '';
  86. id.value = '';
  87.  }

Pregunta???
Nunca había probado hacer esto, sabes dónde queda guardada la información, ósea, dónde queda la DB?
El pasado son solo recuerdos, el futuro son solo sueños

Thanatos-chan

  • Miembro MUY activo
  • ***
  • Mensajes: 136
  • Nacionalidad: do
    • Ver Perfil
Re:Aplicacion html5+sqlite en 3 capas
« Respuesta #2 en: Miércoles 22 de Agosto de 2012, 05:40 »
0
Solo separalo en 2 archivos

yeah, ya los habia separado en html y js, lo que se me paso era que no puse el js en el www y no lo veia... :whistling: un error de capa 8.


Pregunta???
Nunca había probado hacer esto, sabes dónde queda guardada la información, ósea, dónde queda la DB?

Para hacer aplicaciones de tablet esta genial. con tan solo
Código: Javascript
  1. var db = openDatabase("AddressBook", "1.0", "Address Book", 200000);
  2.  

Se esta creando una instancia de base de datos de sqlite. mientras esta en la aplicacion esta metida en el .cache pero la base de datos entera es un solo archivo .sqlite

para jugar con ella puedes instalar el plugin de firefox de sqlite Manager


Que es un genio???? yo superare a un genio con trabajo duro, y eso es todo.