我正在尝试在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;
答案 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
查询,并且您确定它的神秘代码没有执行两次吗?
这可以解释您在手动执行查询(一次)时没有看到错误。