2011-04-15 30 views
0

我想删除现有的SQLite数据库中的所有数据,这是我使用的代码:绑定或列索引超出范围

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);  

有这多个领域,多个表D B。请让我知道错误是什么。提前致谢。

回答

2

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

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

感谢

+0

谢谢!有用!!数据库名称和第一个表是相同的,所以第一个表的所有记录都被删除。这个直接的查询正在发生 – 2011-04-15 16:06:00

相关问题