Cordova Sqlite 插件插入具有空值的条目
Cordova Sqlite plugin inserts entries with null values
我正在实施 Cordova Sqlite plugin in a Ionic project, so far I've been able to create a database and table and make queries following the functions available through the ngCordova implementation。
我注意到有一个可用的 insertCollection
函数,我试图测试它,我将一个数组传递给它,即使进行了插入,条目也是空的。
这是我的示例 table 定义:
CREATE TABLE IF NOT EXISTS people (id integer primary key, firstname text, lastname text)
我这样填充了一个数组:
for(var i = 0; i < 250000; i++){
var index = i + 1;
firstname = firstname + ' ' + index;
var entry = {
'firstname' : firstname,
'lastname' : lastname
};
$scope.insertArray.push(entry);
}
然后像这样插入:
$cordovaSQLite.insertCollection($rootScope.db, $scope.insertQuery, $scope.insertArray).then(function(res) {
console.log(res);
}, function (err) {
console.error(err);
});
其中 insertQuery
如下:
INSERT INTO people (firstname, lastname) VALUES (?,?)
我做了一个select这样的:
$scope.select = function() {
$scope.results = [];
var query = "SELECT firstname, lastname FROM people";
$cordovaSQLite.execute($rootScope.db, query).then(function(res) {
if(res.rows.length > 0) {
console.log('select was successful ' + res.rows.length + ' entries');
for(var i = 0; i < $scope.maxItemsToShow; i++){
$scope.results.push(res.rows.item(i));
}
} else {
console.log("No results found");
}
}, function (err) {
console.error(err);
});
}
我尝试在 ion-list
上显示结果,但所有项目的名字和姓氏中的值都为空。
是什么导致了这个问题?
函数 insertCollection
需要一个数组数组,而不是一个记录数组。内部数组必须包含要按问号(作为值的占位符)在 sql 语句中出现的顺序插入的值。
所以你需要写:
for(var i = 0; i < 250000; i++){
var index = i + 1;
firstname = firstname + ' ' + index;
var entry = [firstname, lastname];
$scope.insertArray.push(entry);
}
我正在实施 Cordova Sqlite plugin in a Ionic project, so far I've been able to create a database and table and make queries following the functions available through the ngCordova implementation。
我注意到有一个可用的 insertCollection
函数,我试图测试它,我将一个数组传递给它,即使进行了插入,条目也是空的。
这是我的示例 table 定义:
CREATE TABLE IF NOT EXISTS people (id integer primary key, firstname text, lastname text)
我这样填充了一个数组:
for(var i = 0; i < 250000; i++){
var index = i + 1;
firstname = firstname + ' ' + index;
var entry = {
'firstname' : firstname,
'lastname' : lastname
};
$scope.insertArray.push(entry);
}
然后像这样插入:
$cordovaSQLite.insertCollection($rootScope.db, $scope.insertQuery, $scope.insertArray).then(function(res) {
console.log(res);
}, function (err) {
console.error(err);
});
其中 insertQuery
如下:
INSERT INTO people (firstname, lastname) VALUES (?,?)
我做了一个select这样的:
$scope.select = function() {
$scope.results = [];
var query = "SELECT firstname, lastname FROM people";
$cordovaSQLite.execute($rootScope.db, query).then(function(res) {
if(res.rows.length > 0) {
console.log('select was successful ' + res.rows.length + ' entries');
for(var i = 0; i < $scope.maxItemsToShow; i++){
$scope.results.push(res.rows.item(i));
}
} else {
console.log("No results found");
}
}, function (err) {
console.error(err);
});
}
我尝试在 ion-list
上显示结果,但所有项目的名字和姓氏中的值都为空。
是什么导致了这个问题?
函数 insertCollection
需要一个数组数组,而不是一个记录数组。内部数组必须包含要按问号(作为值的占位符)在 sql 语句中出现的顺序插入的值。
所以你需要写:
for(var i = 0; i < 250000; i++){
var index = i + 1;
firstname = firstname + ' ' + index;
var entry = [firstname, lastname];
$scope.insertArray.push(entry);
}