gpt4 book ai didi

ios - 如果存在返回什么

转载 作者:行者123 更新时间:2023-11-29 13:24:38 25 4
gpt4 key购买 nike

我正在使用 sqlite3 作为 ios 项目的数据库,并且想执行 if exist 语句来查看对象是否存在,如果存在,则更新或插入。

我正在使用这个函数查询数据库

-(void)updateStatus:(NSString *)queryString {
NSString *docsDir;
NSArray *dirPaths;
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
m_singleton = [Singleton sharedSingleton];

strDatabasePath = [NSString stringWithString:[docsDir stringByAppendingPathComponent:@"BorneoMotors.db"]];
NSFileManager *filemgr = [NSFileManager defaultManager];

if ([filemgr fileExistsAtPath: strDatabasePath] == YES)
{
const char *dbpath = [strDatabasePath UTF8String];
if (sqlite3_open(dbpath, &sqlDatabase) == SQLITE_OK)
{
const char* beginString = "BEGIN;";
sqlite3_stmt *compiledstatement;
sqlite3_prepare_v2(sqlDatabase, beginString, -1, &compiledstatement, NULL);
if (sqlite3_step(compiledstatement) == SQLITE_DONE) {}
else NSLog(@"Failed!");
sqlite3_finalize(compiledstatement);



NSLog(@"QUERY : %@",queryString);

const char *selectStatement = [queryString UTF8String];

sqlite3_prepare_v2(sqlDatabase, selectStatement, -1, &compiledstatement, NULL);
//sqlite3_bind_text(compiledstatement,1,[statusString UTF8String],-1,SQLITE_TRANSIENT);

if (sqlite3_step(compiledstatement) == SQLITE_DONE) {}
else NSLog(@"Failed!");
sqlite3_finalize(compiledstatement);


const char* endString="END;";
sqlite3_prepare_v2(sqlDatabase, endString, -1, &compiledstatement, NULL);
if (sqlite3_step(compiledstatement) == SQLITE_DONE) {}
else NSLog(@"Failed!");
sqlite3_finalize(compiledstatement);

sqlite3_close(sqlDatabase);
}
else NSLog(@"Failed to open table");
}

}

我遇到的问题是 this if exists 会返回什么,我该如何继续。

NSString *checkstring = [NSString stringWithFormat:@"IF EXISTS (SELECT * FROM DATABASE WHERE id = %@",cars.ID];
DB *accessdb = [[DB alloc] init];
[accessdb updateStatus:checkstring];
if (??){
NSString *queryString = [NSString stringWithFormat: @"UPDATE DATABASE SET STATUS='%@' WHERE \"DATABASEID\" = '%@'", cars.status,cars.ID];
const char *selectStatement = [queryString UTF8String];

sqlite3_prepare_v2(sqlDatabase, selectStatement, -1, &statement, NULL);
//sqlite3_bind_text(compiledstatement,1,[statusString UTF8String],-1,SQLITE_TRANSIENT);

if (sqlite3_step(statement) == SQLITE_DONE) {}
else NSLog(@"Failed!");
sqlite3_finalize(statement);
}else{
insert}

如何检查对象是否存在? if exists 返回什么?需要一些指导...

最佳答案

SQLite 没有IF 语句。

要检查某条记录是否存在,只需执行如下查询

SELECT 1 FROM database WHERE ID = ?

并在您的应用中测试您是否取回记录。

对于您的更新/插入问题:如果您在键列上有一个唯一索引,您可以使用 INSERT OR REPLACE command如果新记录会创建副本,它会自动删除旧记录。

关于ios - 如果存在返回什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13458222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com