gpt4 book ai didi

ios - 如何在sqlite数据库的表行中添加NSDictionary

转载 作者:行者123 更新时间:2023-12-03 18:37:34 28 4
gpt4 key购买 nike

我是iPhone开发的新手。我想在表sqlite行中存储一个NSDictionary。
我用Google搜索,发现了很多结果,但对我不起作用。

这是我的字典:

NSDictionary * dic = [NSDictionary dictionaryWithObjectsAndKeys:@"24",@"id",@"Folder",@"name",@"300 MB",@"size", nil];

我也在这个网站上搜寻,但对类似的文章一无所知。
请向我解释有关在表SQLite DB的行中添加(存储)NSDictionary的更多信息。

最佳答案

您可以通过创建具有三列的表(使用create table query)来做到这一点。然后将字典中的这些对象插入到这些列中(使用插入查询)。

编辑:对于插入数据使用查询:

            NSString *query = [NSString stringWithFormat:@"insert into tablename (column1, column2,column3) values('%@','%@','%@')",[dic objectForKey:@"id"],[dic objectForKey:@"name"],[dic objectForKey:@"size"]];
NSLog(@"query : %@",query);
[self executeQuery:query];

在.h类中,创建一个sqlite实例:
sqlite3 *database; and import:  #import<sqlite3.h>

在.m类中添加以下方法:
-(NSString *) dataFilePath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSLog(@"PATH %@",[documentsDirectory stringByAppendingPathComponent:DatabaseName]);
return [documentsDirectory stringByAppendingPathComponent:DatabaseName];
}

/*==================================================================
METHOD FOR INSERTING DATA IN DATABASE
==================================================================*/
-(void)executeQuery:(NSString *)query
{
//NSLog(@"QUERY : %@",query);

sqlite3_stmt *statement;
if(sqlite3_open([[self dataFilePath] UTF8String], &database) == SQLITE_OK)
{
if (sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, NULL) == SQLITE_OK)
{
if (sqlite3_step(statement) != SQLITE_DONE)
{
sqlite3_finalize(statement);
}
}
else
{
NSLog(@"query Statement Not Compiled");
}

sqlite3_finalize(statement);
sqlite3_close(database);
}
else
{
NSLog(@"Data not Opened");
}
}

对于读取数据:
/*==================================================================
METHOD FOR Fetching Data FROM DATABASE
==================================================================*/
NSString *query = [NSString stringWithFormat:@"select * from table_name"];
NSMutableArray *tableData = [self fetchingDataFromTable:query];

//这里的表数据数组包含所有记录
-(NSMutableArray *)fetchingDataFromTable:(NSString *)query;
{
NSLog(@"QUERY : %@",query);

NSString *idToReturn=@"";
NSMutableArray *returnArray = [NSMutableArray new];
if(sqlite3_open([[self dataFilePath] UTF8String], &database) == SQLITE_OK)
{
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil)==SQLITE_OK)
{
while(sqlite3_step(statement)==SQLITE_ROW)
{
NSMutableDictionary *temp= [NSMutableDictionary new];
const char *s;


s=(char *)sqlite3_column_text(statement, 0);
if(s==NULL)
{
idToReturn=@"";
}
else
{
idToReturn =[NSString stringWithUTF8String:s];
}
[temp setObject:idToReturn forKey:@"id"];

s=(char *)sqlite3_column_text(statement, 1);
if(s==NULL)
{
idToReturn=@"";
}
else
{
idToReturn =[NSString stringWithUTF8String:s];
}
[temp setObject:idToReturn forKey:@"name"];

s=(char *)sqlite3_column_text(statement, 2);
if(s==NULL)
{
idToReturn=@"";
}
else
{
idToReturn =[NSString stringWithUTF8String:s];
}
[temp setObject:idToReturn forKey:@"size"];

if (temp != nil)
{
[returnArray addObject:temp];

temp = nil;
}

}
sqlite3_finalize(statement);
sqlite3_close(database);
}
}
return returnArray;

}

希望对您有帮助。

关于ios - 如何在sqlite数据库的表行中添加NSDictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16314065/

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