SQLite。科尔多瓦。不能插入超过 995 行
SQLite. Cordova. Can't insert more than 995 rows
我正在使用:
- iPhone5S,iOS8.1.3
- 或任何iOS模拟器
- Cordova 4.0.0,Ionic v1.0.0-beta.14
- Cordova/PhoneGap SQLitePlugin
我使用带有 Angular 包装器的 SQLite 插件。函数 self.insert()
在 table "stores" 中插入一行。函数 self.query()
处理所有查询和可能的错误。
控制器中的函数 $scope.init()
用于在 table "stores".
中插入 20000 行
问题:
仅插入前 996 行。没有错误。有时 995 或 997 行。
注:
在 WebSQL 中一切正常 (Chrome)。插入了所有 20000 行。
提前致谢!
工厂 1:
self.query = function(query, parameters) {
return $cordovaSQLite.execute(db, query, parameters).then(function(result) {
//console.log(result);
return result;
}, function (error) {
console.log(error);
return error;
});
};
工厂 2:
self.insert = function(shop) {
var parameters = [shop.storeId, shop.storeName, shop.address, shop.post, shop.city, shop.lat, shop.lng, shop.open, shop.favorites];
return DB.query("INSERT INTO stores (storeId, storeName, address, post, city, lat, lng, open, favorites) VALUES (?,?,?,?,?,?,?,?,?)", parameters);
};
控制器中的代码:
$scope.init = function(){
DB.query("DROP TABLE IF EXISTS stores");
DB.query("CREATE TABLE IF NOT EXISTS stores (storeId integer,storeName text, address text, post text, city text, lat integer, lng integer, open text, favorites integer)");
json_service.getJson().then(function(data){
for (var i = 0; i < data.length; i++){
for (var j = 0; j < data[i].data.shops.length; j++) {
var coordinates = data[i].data.shops[j].g.split(",");
var oneStore = {
storeId: i + 1,
storeName: data[i].data.title,
address: data[i].data.shops[j].a,
post: data[i].data.shops[j].p,
city: data[i].data.shops[j].s,
lat: coordinates[0],
lng: coordinates[1],
open: data[i].data.shops[j].t[0],
favorites: 0
};
stores_service.insert(oneStore);
}
}
});
};
看起来像 Cordova-sqlite-storage bug #190,这是在旧版本的 cordova-ios 上观察到的,已经在 Cordova-iOS 3.8.0.
上解决了
我正在使用:
- iPhone5S,iOS8.1.3
- 或任何iOS模拟器
- Cordova 4.0.0,Ionic v1.0.0-beta.14
- Cordova/PhoneGap SQLitePlugin
我使用带有 Angular 包装器的 SQLite 插件。函数 self.insert()
在 table "stores" 中插入一行。函数 self.query()
处理所有查询和可能的错误。
控制器中的函数 $scope.init()
用于在 table "stores".
问题: 仅插入前 996 行。没有错误。有时 995 或 997 行。
注: 在 WebSQL 中一切正常 (Chrome)。插入了所有 20000 行。
提前致谢!
工厂 1:
self.query = function(query, parameters) {
return $cordovaSQLite.execute(db, query, parameters).then(function(result) {
//console.log(result);
return result;
}, function (error) {
console.log(error);
return error;
});
};
工厂 2:
self.insert = function(shop) {
var parameters = [shop.storeId, shop.storeName, shop.address, shop.post, shop.city, shop.lat, shop.lng, shop.open, shop.favorites];
return DB.query("INSERT INTO stores (storeId, storeName, address, post, city, lat, lng, open, favorites) VALUES (?,?,?,?,?,?,?,?,?)", parameters);
};
控制器中的代码:
$scope.init = function(){
DB.query("DROP TABLE IF EXISTS stores");
DB.query("CREATE TABLE IF NOT EXISTS stores (storeId integer,storeName text, address text, post text, city text, lat integer, lng integer, open text, favorites integer)");
json_service.getJson().then(function(data){
for (var i = 0; i < data.length; i++){
for (var j = 0; j < data[i].data.shops.length; j++) {
var coordinates = data[i].data.shops[j].g.split(",");
var oneStore = {
storeId: i + 1,
storeName: data[i].data.title,
address: data[i].data.shops[j].a,
post: data[i].data.shops[j].p,
city: data[i].data.shops[j].s,
lat: coordinates[0],
lng: coordinates[1],
open: data[i].data.shops[j].t[0],
favorites: 0
};
stores_service.insert(oneStore);
}
}
});
};
看起来像 Cordova-sqlite-storage bug #190,这是在旧版本的 cordova-ios 上观察到的,已经在 Cordova-iOS 3.8.0.
上解决了