2011-10-24 42 views
3

我想插入一些数据到mydatabase.sqlite,但我有一个问题。插入数据时没有错误消息,但随后我打开数据库,但无法看到任何数据。没有任何数据。SQLite插入数据在目标c

这是addCoffee方法MyClass的:

if(addStmt == nil) { 
    const char *sql = "insert into records(Date, Latitude, Longitude) Values(?, ?, ?)"; 
    if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) != SQLITE_OK) 
     NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database)); 
} 

sqlite3_bind_text(addStmt, 1, [Date UTF8String], -1, SQLITE_TRANSIENT); 
sqlite3_bind_double(addStmt, 2, [Latitude doubleValue]); 
sqlite3_bind_double(addStmt, 3, [Longitude doubleValue]); 

if(SQLITE_DONE != sqlite3_step(addStmt)) 
    NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database)); 
else 
    //SQLite provides a method to get the last primary key inserted by using sqlite3_last_insert_rowid 
    recordID = sqlite3_last_insert_rowid(database); 

//Reset the add statement. 
sqlite3_reset(addStmt); 

发送数据:

iDailyAppDelegate *appDelegate = (iDailyAppDelegate *)[[UIApplication sharedApplication] delegate]; 

//Create a MyClass Object. 
MyClass *coffeeObj = [[MyClass alloc] initWithPrimaryKey:0]; 
coffeeObj.Date = dateInString; 
NSDecimalNumber *temp = [[NSDecimalNumber alloc] initWithString:first]; 
coffeeObj.Latitude = temp; 
NSDecimalNumber *temp2 = [[NSDecimalNumber alloc] initWithString:second]; 
coffeeObj.Longitude = temp2; 
[temp release]; 
coffeeObj.isDirty = NO; 
coffeeObj.isDetailViewHydrated = YES; 

//Add the object 
[appDelegate addCoffee:coffeeObj]; 
+0

是否有可能你执行'BEGIN TRANSACTION'如此没有执行相应的“COMMIT”? –

+0

抱歉,我能做什么,我不明白你? –

+0

请帮我! –

回答

1
- (void)inserting{ 

    database=nil; 
    if (sqlite3_open([[DBAction getSqlitePath] UTF8String], &database) == SQLITE_OK){ 
     const char *sql = [[NSString stringWithFormat:@"insert into SiteTable set Site_Address = '%@'",someString] UTF8String]; 
     sqlite3_stmt *updateStmt = nil; 
     if(sqlite3_prepare_v2(database, sql, -1, &updateStmt, NULL) != SQLITE_OK) 
     { 
      //NSAssert1(0, @"Error while creating update statement. '%s'", sqlite3_errmsg(database)); 
     } 
     if (SQLITE_DONE != sqlite3_step(updateStmt)){ 
      //NSAssert1(0, @"Error while creating database. '%s'", sqlite3_errmsg(database)); 
     } 
     sqlite3_reset(updateStmt); 
     sqlite3_finalize(updateStmt); 
    } 
    else{ 
     //NSAssert1(0, @"Error while opening database '%s'", sqlite3_errmsg(database)); 
    } 
    sqlite3_close(database); 

} 
+0

为什么你使用update语句而不是insert?另外,我尝试过这种方式,但它不是记录:S –

+0

而不是更新,你可以使用插入 – Tendulkar

+0

看看修改后的答案 – Tendulkar

1

为您发送到数据库,然后尝试从执行它们所有SQL命令创建的NSLog终端,你会看到所有的错误,并能够修复它们

+0

每个sql语句后有nslog ..它不给我任何错误信息! –

+0

我修正了thnx –