2011-11-04 19 views
3

我目前使用phonegap來創建和iOS應用程序。檢查DB是否存在並刪除SQLlite中的數據庫IOS

在熟悉sql javascript交互的同時,我似乎已經創建了10個版本的同名數據庫文件。我目前使用下面的創建代碼(從PhoneGap的維基)

var mydb=false; 
// initialise the database 
initDB = function() { 
    try { 
    if (!window.openDatabase) { 
     alert('not supported'); 
    } else { 
     var shortName = 'phonegap'; 
     var version = '1.0'; 
     var displayName = 'PhoneGap Test Database'; 
     var maxSize = 65536; // in bytes 
     mydb = openDatabase(shortName, version, displayName, maxSize); 
    } 
    } catch(e) { 
    // Error handling code goes here. 
    if (e == INVALID_STATE_ERR) { 
     // Version number mismatch. 
     alert("Invalid database version."); 
    } else { 
     alert("Unknown error "+e+"."); 
    } 
    return; 
    } 
} 
// db error handler - prevents the rest of the transaction going ahead on failure 
    errorHandler = function (transaction, error) { 
     // returns true to rollback the transaction 
    return true; 
      } 
// null db data handler 
    nullDataHandler = function (transaction, results) { } 

我的問題

是,我不知道該如何檢查數據庫中創建它或如何只能創建之前存在每個設備一次?

其次,我該如何刪除所有這些已創建的數據庫。

transaction.executeSql('DROP DATABASE phonegap;'); 

似乎沒有放棄任何東西。

謝謝

+0

http://www.devdaily.com/android/sqlite-drop-database-how –

回答

4

請嘗試下面的代碼。它不會創建多個數據庫文件,只需通過訪問位置進行交叉驗證 -

/Users/{username}/Library/Application Support/iPhone Simulator/4.3/Applications/{3D5CD3CC-C35B-41B3-BF99-F1E4B048FFFF}/Library/WebKit/Databases/file__0

這是sqlite3示例,它涵蓋了在表上創建,插入,刪除和刪除查詢。

<!DOCTYPE html> 
<html> 
    <body style="font: 75% Lucida Grande, Trebuchet MS"> 
    <div id="content"></div> 
    <p id="log" style="color: gray"></p> 
    <script> 
     document.getElementById('content').innerHTML = 
     '<h4>Simple to do list</h4>'+ 
     '<ul id="results"></ul><div>Handle Database in Phonegap</div>'+ 
     '<button onclick="newRecord()">new record</button>'+ 
     '<button onclick="createTable()">create table</button>' + 
     '<button onclick="dropTable()">drop table</button>'; 
     var db; 
     var log = document.getElementById('log'); 
     db = openDatabase("DBTest", "1.0", "HTML5 Database API example", 200000); 
     showRecords(); 
     document.getElementById('results').addEventListener('click', function(e) { e.preventDefault(); }, false); 
     function onError(tx, error) { 
     log.innerHTML += '<p>' + error.message + '</p>'; 
     } 
     // select all records and display them 
     function showRecords() { 
     document.getElementById('results').innerHTML = ''; 
     db.transaction(function(tx) { 
      tx.executeSql("SELECT * FROM Table1Test", [], function(tx, result) { 
      for (var i = 0, item = null; i < result.rows.length; i++) { 
       item = result.rows.item(i); 
       document.getElementById('results').innerHTML += 
        '<li><span contenteditable="true" onkeyup="updateRecord('+item['id']+', this)">'+ 
        item['id']+' '+item['text'] + '</span> <a href="#" onclick="deleteRecord('+item['id']+')">x</a></li>'; 
      } 
      }); 
     }); 
     } 
     function createTable() { 
     db.transaction(function(tx) { 
      tx.executeSql("CREATE TABLE Table1Test (id REAL UNIQUE, text TEXT)", [], 
       function(tx) { log.innerHTML = 'Table1Test created' }, 
       onError); 
     }); 
     } 
     // add record with random values 
     function newRecord() { 
     var num = Math.round(Math.random() * 10000); // random data 
     db.transaction(function(tx) { 
      tx.executeSql("INSERT INTO Table1Test (id, text) VALUES (?, ?)", [num, 'Record:'], 
       function(tx, result) { 
       log.innerHTML = 'record added'; 
       showRecords(); 
       }, 
       onError); 
     }); 
     } 
     function updateRecord(id, textEl) { 
     db.transaction(function(tx) { 
      tx.executeSql("UPDATE Table1Test SET text = ? WHERE id = ?", [textEl.innerHTML, id], null, onError); 
     }); 
     } 
     function deleteRecord(id) { 
     db.transaction(function(tx) { 
      tx.executeSql("DELETE FROM Table1Test WHERE id=?", [id], 
       function(tx, result) { showRecords() }, 
       onError); 
     }); 
     } 
     // delete table from db 
     function dropTable() { 
     db.transaction(function(tx) { 
      tx.executeSql("DROP TABLE Table1Test", [], 
       function(tx) { showRecords() }, 
       onError); 
     }); 
     } 
    </script> 
    </body> 
</html> 

而關於滴速數據庫... 似乎不有意義的像的SQLite嵌入式數據庫引擎。
要創建一個新的數據庫,只需執行sqlite_open()。
要刪除數據庫,只需刪除該文件。

感謝,
MAYUR

+0

感謝您的代碼示例,比我見過的其他人更可讀,關於多個數據庫的這只是我在Safari瀏覽器控制檯中看到了什麼。我正在使用實際的設備而不是模擬器,並且不知道如何進入設備文件系統來確認 – Xand94

+0

那麼您怎麼能知道有多個數據庫已經創建? –

+0

在safari中使用web檢查器顯示每次刷新頁面時都會顯示一個新的數據庫樹。 – Xand94

0

手動刪除從庫SQLite數據庫爲我工作。感謝寶貴的小費。

+0

請問什麼庫? –

相關問題