绑定或列索引超出范围

时间:2011-04-15 15:00:54

标签: iphone sqlite

我想删除现有sqlite DB中的所有数据,这是我正在使用的代码:

sqlite3* database;
databaseName = @"AppDB";
NSString *pathToDatabase;
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
pathToDatabase = [documentsDir stringByAppendingPathComponent:databaseName];

int databaseReturnCode = sqlite3_open([pathToDatabase UTF8String], &database);
NSLog(@"databaseReturnCode %d",databaseReturnCode);
if(databaseReturnCode == SQLITE_OK) {


    const char *sql = "delete from AppDB";
    sqlite3_stmt *delete_statement;

    sqlite3_prepare_v2(database, sql, -1, &delete_statement, NULL);

    sqlite3_bind_int(delete_statement, 1, 1);

    printf( "error or not an error? :  %s\n", sqlite3_errmsg(database) ); 

    sqlite3_reset(delete_statement);

    sqlite3_finalize(delete_statement);

}
sqlite3_close(database);    

此DB中有多个字段和多个表。请让我知道错误是什么。提前谢谢。

1 个答案:

答案 0 :(得分:2)

请评论此sqlite3_bind_int(delete_statement, 1, 1);行并运行代码,因为在查询中您没有任何需要绑定的参数。我也徘徊这个查询存在吗?你能直接这样做吗从someDatabase中删除吗?我认为没有任何查询需要数据库名称! (我希望AppDB是表名。)

[我们应该遵循标准命名约定以便于理解。]

谢谢