【发布时间】:2015-07-09 21:10:40
【问题描述】:
我在设置我的应用程序、创建本地数据库并简单地插入 first 和 only 用户(已在本地登录)时遇到此错误。请参阅代码中的注释以了解我收到错误消息的位置。
angular.module("greenApp")
.service("dbService",['$q', function($q){
var db;
var promise = function(){
var deferred = $q.defer();
db = window.openDatabase('greenDB', '1.0', 'Green Database', 2*1024*1024);
db.transaction(function(tx){
tx.executeSql("CREATE TABLE IF NOT EXISTS user (user TEXT PRIMARY KEY) ")
}, function(err){
alert('Something went wrong... Error: DATABASE INIT ' + err);
}, function(scc){
deferred.resolve();
})
return deferred.promise;
}
promise();
var query = function(sql, args) {
var deferred = $q.defer();
db.transaction(function(tx) {
tx.executeSql(sql, args, function(tx, results) {
deferred.resolve(results);
});
}, function(err) {
deferred.reject(err);
});
return deferred.promise;
};
var insert_into = function(args) {
var queryPromise = query("INSERT INTO user (user) VALUES (?)", args);
console.log("in insert_into", queryPromise) // Error message comes here
return queryPromise;
};
return {
promise: promise,
insert_into: insert_into,
};
}]);
args 只是 ["user-name-string"],我收到一条错误消息:
"由于约束失败,无法执行语句(19 UNIQUE 约束失败:user.user)
任何想法可能会发生什么?完全相同的代码在我刚刚移植到 Ionic 的最近的纯 cordova 项目中运行和工作。
【问题讨论】:
-
你能不能显示你正在使用的 dbms 的表结构
-
你想在表格中插入相同的文本吗?你能举个例子吗?
-
我会直接在您的 insert_into 方法中抛出一个 console.log 语句并仔细检查以确保 args 是您所期望的,而不是例如 null。
-
谢谢,但我已经做到了,args 符合预期,并且与问题中所述完全一致。
-
是
user列名吗?
标签: javascript sql angularjs cordova network-programming