xcode SQLite 在目标 c 中插入数据
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/7871816/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
SQLite insert data in objective c
提问by Hacer sengul Akac
I want to insert some data to mydatabase.sqlite but I have a problem. There is no error message when inserting data but then I open database and I cant see any data. There isnt any data.
我想向 mydatabase.sqlite 插入一些数据,但我遇到了问题。插入数据时没有错误消息,但打开数据库后看不到任何数据。没有任何数据。
this is addCoffee method in MyClass:
这是 MyClass 中的 addCoffee 方法:
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);
sending data:
发送数据:
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];
采纳答案by Tendulkar
- (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);
}
回答by Amar Kulo
Create NSLog for all sql commands that you send to database and then try to execute them from the terminal and you will see all errors and be able to fix them
为您发送到数据库的所有 sql 命令创建 NSLog,然后尝试从终端执行它们,您将看到所有错误并能够修复它们