簡體   English   中英

如何在鈦合金項目中安裝數據庫?

[英]How can I install a database in a titanium alloy project?

我一直在嘗試使用文檔中的代碼將一個簡單的小型數據庫安裝到我的鈦項目中,並嘗試各種資料來源提出的不同調整。 但是我無法使其正常工作,出現諸如“沒有這樣的表”或結果集為空之類的錯誤。 當前我的代碼如下所示:

var db = Ti.Database.install('../assets/exercises.db', 'exercisesDB');
Ti.API.info('installed '+ db.getName()  );
db.close();
Ti.API.info('closed db'  );
db = Ti.Database.open('exercisesDB');
Ti.API.info('reopened db'  );
//Ti.API.info(db.getName()  );
var exercisesDBRS = db.execute('SELECT id,name FROM exercise');

我試過將數據庫文件exercise.db放在assets文件夾和Resources文件夾中,但是我什么也沒找到。 我在OSX Sierra上使用“數據庫瀏覽器用於SQLite”版本3.9.1創建了db文件-它與appcelerator合金項目兼容嗎? 我當前的代碼在execute調用上產生錯誤“ no such table”。 我向您保證db文件中有一個練習表。

PS,新項目index.js文件中的完整代碼如下:

var db = Ti.Database.install('exercises.sqlite', 'exercisesDB');
Ti.API.debug('installed '+ db.getName()  );
db.close();
Ti.API.debug('closed db'  );
db = Ti.Database.open('exercisesDB');
Ti.API.debug('reopened db'  );
var exercisesDBRS = db.execute('SELECT id, name FROM exercise');
Ti.API.debug('executed select');
Ti.API.debug(' rowcount== '+   exercisesDBRS.rowCount);

while (exercisesDBRS.isValidRow()) {
    var exId = exercisesDBRS.fieldByName('id');
    var exName = exercisesDBRS.fieldByName('name');

    Ti.API.debug("Exercise: "+exId + ' ' + exName  );
    exercisesDBRS.next();
}
exercisesDBRS.close();
db.close(); 

function doClick(e) {
    alert($.label.text);
}

$.index.open();

新項目,但是相同的代碼和app / lib文件夾中相同數據庫文件的副本。 同樣的錯誤-在android中測試時,執行行上沒有這樣的表,在iOS sim中工作正常。

根據文檔,您的外部數據庫應位於運行以下代碼的位置:

var db = Ti.Database.install('../assets/exercises.db', 'exercisesDB');

  1. 無需使用../assets/ 您可以簡單地引用沒有它的數據庫,因為您放置在資產文件夾中的所有內容都移至各自的Resources-> iphone / android文件夾中。

  2. 您始終可以對外部數據庫使用Ti.Database.install方法,因為安裝數據庫一次后,其行為將類似於Ti.Database.open('exercisesDB')方法。

首先要關心的是,您總是可以安全地將數據庫文件放在app-> lib文件夾中(如果不存在,則創建lib文件夾,然后將db文件放在其中)。

將db文件放在此處后,您始終可以使用以下代碼:

var db = Ti.Database.install('exercises.db', 'exercisesDB');

但是,我從未使用過.db擴展名 ,而是我一直使用.sqlite格式 (因為文檔也顯示了SQLite數據庫),並且每次都可以100%正確地工作。

因此,您可以通過將數據庫格式更改為.sqlite並將其放在app-> lib文件夾中來嘗試此過程。 它絕對可以正常工作,並且在驗證之后,您可以在使用.db文件時使用相同的代碼,然后查看是否受支持。

在Android上:請執行以下步驟:

1-在您的PC中,轉到項目的根目錄,刪除buildResources文件夾。

2-在設備上,從“設置”中清除應用程序數據,然后刪除該應用程序。

3-現在,使用與我在此處提到的相同的代碼和流程再次安裝該應用程序。

如果它在iOS sim上運行良好,那么它也應在Android上運行(僅存在一些清理問題或您以前的數據庫仍然存在)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM