如何从 HTML 5/cordova/Intel xdk 中的 sqlite .db 文件中读取数据
How to read data from sqlite .db file in HTML 5/cordova/Intel xdk
我正在使用 intel XDK,我有一个预填充的 .db 文件,我需要在我的代码中读取它。正如我们在本机应用程序中所做的那样,我们将 db 文件放在资产目录中,然后通过将它们复制到应用程序的数据库目录中来访问这些数据库。我是混合应用程序的新手。
注意:对于您的项目创建的视图数据库,
1st 进行 windows 构建和 运行 你的项目。
然后去
C:\Users\XXXXX\AppData\Local\Packages\pakagename\LocalState\yourdbname.db
您可以找到您的数据库文件
您可以查看该文件 on this site
关于数据库的创建和使用
请使用 link 到 Intel XDK 第三方插件。在此之前,请从 GitHub 下载项目依赖 jar 文件并使用 Cordova 插件 SQLite 名称创建目录并将文件放入其中,包括 jar 文件。然后尝试使用 URL .
添加插件
查看下面的完整代码
1.create 数据库
2.add table
3.add 数据到 table
4.get 数据来自 table
> // Wait for Cordova to load
document.addEventListener('deviceready', onDeviceReady, false);
// Cordova is ready
function onDeviceReady() {
////////////////////////////////////////////////////////////////////////////////////////////////
alert("Start ");
var db = window.sqlitePlugin.openDatabase({ name: 'my.db', location: 'default' }, function () {
alert("database creatred");
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE customerAccounts (firstname, lastname, acctNo)');
alert("Table create");
addItem("first", "last", 100);
getData("last");
}, function (error) {
alert('transaction error: ' + error.message);
}, function () {
alert('transaction ok');
});
}, function (error) {
});
////////////////////////////////////////////////////////////////////////////////////////////////
function addItem(first, last, acctNum) {
alert("start adding");
db.transaction(function (tx) {
var query = "INSERT INTO customerAccounts (firstname, lastname, acctNo) VALUES (?,?,?)";
alert("start insterting");
tx.executeSql(query, [first, last, acctNum], function(tx, res) {
console.log("insertId: " + res.insertId + " -- probably 1");
console.log("rowsAffected: " + res.rowsAffected + " -- should be 1");
alert("insert complete");
},
function(tx, error) {
alert('INSERT error: ' + error.message);
});
}, function(error) {
alert('transaction error: ' + error.message);
}, function() {
alert('transaction ok');
});
}
////////////////////////////////////////////////////////////////////////////////////////////////
function getData(last) {
db.transaction(function (tx) {
alert("get data");
var query = "SELECT firstname, lastname, acctNo FROM customerAccounts WHERE lastname = ?";
alert("get data working");
tx.executeSql(query, [last], function (tx, resultSet) {
for(var x = 0; x < resultSet.rows.length; x++) {
alert("First name: " + resultSet.rows.item(x).firstname +
", Acct: " + resultSet.rows.item(x).acctNo);
}
},
function (tx, error) {
alert('SELECT error: ' + error.message);
});
}, function (error) {
alert('transaction error: ' + error.message);
}, function () {
alert('transaction ok');
});
}
///////////////////////////////////////////////////////////////////////////////////////////////////
}
我用 sql.js 和 xml http 请求使用以下代码完成了它:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'yourDBname.db', true);
xhr.responseType = 'arraybuffer';
xhr.onload = function(e)
{
mId = sessionStorage.i;
var uInt8Array = new Uint8Array(this.response);
var db = new SQL.Database(uInt8Array);
var contents = db.exec("SELECT * FROM ....your query");
// Do as per requirment
}
我正在使用 intel XDK,我有一个预填充的 .db 文件,我需要在我的代码中读取它。正如我们在本机应用程序中所做的那样,我们将 db 文件放在资产目录中,然后通过将它们复制到应用程序的数据库目录中来访问这些数据库。我是混合应用程序的新手。
注意:对于您的项目创建的视图数据库, 1st 进行 windows 构建和 运行 你的项目。
然后去 C:\Users\XXXXX\AppData\Local\Packages\pakagename\LocalState\yourdbname.db
您可以找到您的数据库文件 您可以查看该文件 on this site
关于数据库的创建和使用 请使用 link 到 Intel XDK 第三方插件。在此之前,请从 GitHub 下载项目依赖 jar 文件并使用 Cordova 插件 SQLite 名称创建目录并将文件放入其中,包括 jar 文件。然后尝试使用 URL .
添加插件查看下面的完整代码 1.create 数据库 2.add table 3.add 数据到 table 4.get 数据来自 table
> // Wait for Cordova to load
document.addEventListener('deviceready', onDeviceReady, false);
// Cordova is ready
function onDeviceReady() {
////////////////////////////////////////////////////////////////////////////////////////////////
alert("Start ");
var db = window.sqlitePlugin.openDatabase({ name: 'my.db', location: 'default' }, function () {
alert("database creatred");
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE customerAccounts (firstname, lastname, acctNo)');
alert("Table create");
addItem("first", "last", 100);
getData("last");
}, function (error) {
alert('transaction error: ' + error.message);
}, function () {
alert('transaction ok');
});
}, function (error) {
});
////////////////////////////////////////////////////////////////////////////////////////////////
function addItem(first, last, acctNum) {
alert("start adding");
db.transaction(function (tx) {
var query = "INSERT INTO customerAccounts (firstname, lastname, acctNo) VALUES (?,?,?)";
alert("start insterting");
tx.executeSql(query, [first, last, acctNum], function(tx, res) {
console.log("insertId: " + res.insertId + " -- probably 1");
console.log("rowsAffected: " + res.rowsAffected + " -- should be 1");
alert("insert complete");
},
function(tx, error) {
alert('INSERT error: ' + error.message);
});
}, function(error) {
alert('transaction error: ' + error.message);
}, function() {
alert('transaction ok');
});
}
////////////////////////////////////////////////////////////////////////////////////////////////
function getData(last) {
db.transaction(function (tx) {
alert("get data");
var query = "SELECT firstname, lastname, acctNo FROM customerAccounts WHERE lastname = ?";
alert("get data working");
tx.executeSql(query, [last], function (tx, resultSet) {
for(var x = 0; x < resultSet.rows.length; x++) {
alert("First name: " + resultSet.rows.item(x).firstname +
", Acct: " + resultSet.rows.item(x).acctNo);
}
},
function (tx, error) {
alert('SELECT error: ' + error.message);
});
}, function (error) {
alert('transaction error: ' + error.message);
}, function () {
alert('transaction ok');
});
}
///////////////////////////////////////////////////////////////////////////////////////////////////
}
我用 sql.js 和 xml http 请求使用以下代码完成了它:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'yourDBname.db', true);
xhr.responseType = 'arraybuffer';
xhr.onload = function(e)
{
mId = sessionStorage.i;
var uInt8Array = new Uint8Array(this.response);
var db = new SQL.Database(uInt8Array);
var contents = db.exec("SELECT * FROM ....your query");
// Do as per requirment
}