在FMDB中,插入是在uitableview中完成的

时间:2016-04-07 09:25:31

标签: ios objective-c

TitleArray=[NSMutableArray arrayWithObjects:@“aaaa",@“bbbb",@“cccc",@“dddd",@“eeee",@“ffff", nil];

   DescArray=[NSMutuableArray arrayWithObjects:@“xxx”,@“yyy”,@“zzz”,@“www”,@“sss”,@“ppp”,nil];

Array=[[NSMutableArray alloc]init];

FMDatabase *Database=[FMDatabase databaseWithPath:[Utility getDatabasePath]];

[Database open];
[Database executeUpdate:@"insert into table(title,description) values(?,?);",TitleArray,DescArray];

FMResultSet *Results=[Database executeQuery:@"select *from table"];

while ([Results next]) {

     Obj *Object1=[[Obj alloc]init];

   Object1.Title=[Results stringForColumn:@"title"];

   Object1.Description=[Results stringForColumn:@"description"];
    [Array addObject:Object];
}

[Database close];

2 个答案:

答案 0 :(得分:3)

1>请检查数据库中是否有名为newstable的表格 2>您没有连接到正确的架构。

请提供更多信息,以便我们提供帮助。 至少显示您的数据库和您建立的连接。

首先尝试创建表格 (随机列随机表)

DROP TABLE IF EXISTS  account ;
CREATE TABLE  account ( 
                     +"accountNum INT( 11 ),"
                   +"accountName TEXT,"
                    +"description TEXT,"
                     +"statusAccount TEXT,"
                    ) ;

答案 1 :(得分:0)

那是因为您的数据库中没有任何此类表,因为错误日志会告诉您。检查数据库查询。由于您的架构包含标题,描述和日期戳,因此newstable表的表创建查询应如下所示:

FMDatabase *database = [FMDatabase databaseWithPath:@"Your database path"];
[database open];
[database executeUpdate:@"CREATE TABLE newstable (id INTEGER  PRIMARY KEY DEFAULT NULL,title TEXT DEFAULT NULL,description TEXT DEFAULT NULL,date TEXT DEFAULT NULL)"];
[database close];

在您的代码中,插入查询错误,因为您说insert into table而不是提供表名。您也可以将数组作为值传递,而不是传递字符串。它应该是:

//Assuming your desc Array and title Array will be of the same count. 
for(int i=0;i<titleArray.count;i++)
{
     [database executeUpdate:@"INSERT INTO newstable (title, description) VALUES (?, ?)", [NSString stringWithFormat:@"%@", [titleArray objectAtIndex:i]],[NSString stringWithFormat:@"%@", [descArray objectAtIndex:i]], nil];
}

同样FMResultSet *Results=[Database executeQuery:@"select *from table"];应为:

FMResultSet *Results=[Database executeQuery:@"select *from newstable"];

您也应该遵循适当的变量命名约定。

我个人更喜欢使用一些外部程序创建一个.db文件,将其添加到我的App包中,然后在第一次运行时将其导入我的App的文档目录。视觉创作总能省去很多麻烦,以防你拼错。