SQlite - iPhone sdk - 断言失败

时间:2010-12-08 11:16:01

标签: iphone objective-c sqlite

我正在尝试在iPhone sdk的SQLite数据库中保存值。 当我执行这一行

[database executeNonQuery:strQuery1];

此消息将打印在控制台上。

  

SQLite步骤失败:约束失败

我需要紧急帮助,因为我今晚必须提交项目。我从那以后一直在努力,这让我疯狂。

Heres简短的头文件信息 我已使用此行在我的View Controller Header中声明了它。

Sqlite *database;

And heres the header of SQlite

@interface Sqlite : NSObject 
{
  NSInteger busyRetryTimeout;
  NSString *filePath;
  sqlite3 *_db;
}

@property (readwrite) NSInteger busyRetryTimeout;
@property (readonly) NSString *filePath;
+ (NSString *)createUuid;
+ (NSString *)version;
- (id)initWithFile:(NSString *)filePath;
- (BOOL)open:(NSString *)filePath;
- (void)close;
- (NSInteger)errorCode;
- (NSString *)errorMessage;
- (NSArray *)executeQuery:(NSString *)sql, ...;
- (NSArray *)executeQuery:(NSString *)sql arguments:(NSArray *)args;
- (BOOL)executeNonQuery:(NSString *)sql, ...;
- (BOOL)executeNonQuery:(NSString *)sql arguments:(NSArray *)args;
- (BOOL)commit;
- (BOOL)rollback;
- (BOOL)beginTransaction;
- (BOOL)beginDeferredTransaction;

3 个答案:

答案 0 :(得分:1)

如果只有某种on line resource where you could go and enter "constraint failed" in a search box来获得答案。

由于情况不幸,我会告诉你的。问题很可能是您违反了查询的关键约束。如果没有查看查询和数据库模式,很难说,但是,例如,您可能尝试插入具有重复主键的行,或者插入带有引用表中不存在的外键的行。

答案 1 :(得分:0)

在SQLliteManager中执行它对你没有帮助,它在iPhone上有点不同。您应该能够使用errorMessage属性从数据库中获取错误。是的,也给我们查询本身。

答案 2 :(得分:0)

首先,只需分享查询即可。你开始惹恼别人了。

其次,您确定神秘查询不是INSERT查询,并且您确定它的神秘代码没有执行两次吗?

这可以解释您在手动执行查询(一次)时没有看到错误。