-2
NSString *docsDir;
NSArray *dirPaths;

dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

docsDir = [dirPaths objectAtIndex:0];

databasePath = [[NSBundle mainBundle] pathForResource:@"etkYeni2" ofType:@"sqlite"];    

const char *dbpath = [databasePath UTF8String];
sqlite3_stmt    *statement;    


if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK){

    NSLog(@"icerdeyim");

    NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO etk (etkTip) VALUES ('%@')",yeniEkleLabel.text];

    const char *query_stmt = [insertSQL UTF8String];
    sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL);

    if (sqlite3_step(statement) == SQLITE_DONE)
    {
        NSLog(@"OK INSERTED");

    } else {
        NSLog(@"NOT INSERTED !!");

    }
    sqlite3_finalize(statement);
    sqlite3_close(contactDB);
}

这是我从文本框中获取字符串并将其插入到 sqlite 数据库的部分代码。我从 firefox 扩展 sqlite 管理器创建了数据库并将其添加到应用程序中。它在模拟器和 ipod touch 中按我想要的方式运行(插入元素,当我使用 SELECT 查询时我可以看到它们),但它没有在 iphone 上插入元素。我的 ipod touch 在 iOS 5 上,而 iphone 在 iOS 6 上。是因为 iOS 或 iphone 的版本,ipod touch 与 sqlite 的伪装不同还是什么?我阅读了这个问题的大部分答案,但仍然没有得到解决方案。在这种情况下有人可以帮助我吗?谢谢 ..

4

2 回答 2

2

您的数据库未复制到电话目录中,您需要添加该数据库。使用此代码。

-(void)createdatabase
{

    NSString *databaseName = @"Card.sqlite";        // Database Name



    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *documentsDir = documentPaths[0];

    NSLog(@"Dir :  %@ ",documentsDir);

    databasePath = [documentsDir stringByAppendingPathComponent:databaseName];


    BOOL success;

        NSFileManager *fileManager = [NSFileManager defaultManager] ;

        success = [fileManager fileExistsAtPath:databasePath];


    if(success)
        return;


    NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName];


    NSLog(@"%@",databasePathFromApp);


    [fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];

}

将您的 sqlite 文件添加到 mainbundle 中。这真的很有帮助。

于 2013-05-08T10:23:39.823 回答
0

请尝试使用这个。如果您想在这种情况下在 sqlite 中插入数据,则必须使用此方法创建数据库并插入查询。我希望它会有所帮助..

- (void)executeQuery:(NSString *)insertQuery
{
    sqlite3_stmt *statement;
    if (sqlite3_open([[self databaseFilePath] UTF8String],&sqliteDB) == SQLITE_OK)
    {
        if(sqlite3_prepare_v2(sqliteDB,[insertQuery 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(sqliteDB);
    }
    else
        NSLog(@"Database Not Opened");
}



- (NSString *)databaseFilePath
{
    databaseName=@"abc.sqlite";
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *path = [paths objectAtIndex:0];
    return [path stringByAppendingPathComponent:databaseName];
}
于 2013-05-08T10:25:05.113 回答