【问题标题】:bind or column index out of range绑定或列索引超出范围
【发布时间】:2011-04-16 00:09:45
【问题描述】:

我想删除现有 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);    

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

【问题讨论】:

    标签: iphone sqlite


    【解决方案1】:

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

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

    谢谢

    【讨论】:

    • 谢谢!有用!!数据库名称和第一个表相同,因此第一个表的所有记录都被删除。这种直接查询正在发生
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多