在我的应用程序中,我需要从最后插入表中获取数据。我所做的是这个
NSString *query = [NSString stringWithFormat:@"SELECT * FROM PHONEBOOK ORDER BY NAME DESC LIMIT 1;"];
// NSLog(@"query : %@",query);
BOOL recordExist = [self recordExistOrNot:query];
if (!recordExist) {
// save data if no record exists
}
-(BOOL)recordExistOrNot:(NSString *)query{
BOOL recordExist=NO;
sqlite3_stmt *statement;
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &myDatabase) == SQLITE_OK) {
if (sqlite3_prepare_v2(myDatabase, [query UTF8String], -1, &statement, nil)==SQLITE_OK)
{
if (sqlite3_step(statement)==SQLITE_ROW)
{
recordExist=YES;
NSString *Name = [[NSString alloc]
initWithUTF8String:
(const char *) sqlite3_column_text(
statement, 0)];
NSString *PhoneNumber = [[NSString alloc]
initWithUTF8String:
(const char *) sqlite3_column_text(
statement, 1)];
//here i need to get the Name and number from the last inserted data
NSLog(@"version is %@, type is %@",Name ,PhoneNumber);
}
else
{
NSLog(@"%s,",sqlite3_errmsg(myDatabase));
}
sqlite3_finalize(statement);
sqlite3_close(myDatabase);
}
}
return recordExist;
}
问题是我没有得到最后插入的数据。我正在从其他行中获取数据(我不确定是否来自顶部行或其他任何数据)。
你能告诉我我在做什么错了。
提前致谢。
如果在插入行之后立即执行此操作,则可以使用SQLite C函数sqlite3_last_insert_rowid()
获取rowid
最后插入的行的。您还可以使用last_insert_rowid()
SQL函数:
SELECT * FROM PHONEBOOK WHERE ROWID = last_insert_rowid()
请注意,您可能必须保持SQLite数据库处于打开状态才能执行此操作(但是无论如何,您都不应该为每个SQL语句打开和关闭数据库)。
如果稍后要执行此操作(例如,用户终止了该应用程序,明天又返回到该应用程序,并希望查看最后插入的记录),那么您必须依靠自己的数据库模型来处理。例如,我经常在表中创建/修改/删除时间戳记,每次INSERT
或每UPDATE
行更新时都会进行更新,然后您可以根据这些值进行排序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句