为什么我不能执行这段代码?

时间:2021-05-27 01:22:02
NSString *event=@"max";
NSString *venue=@"tvm";
NSString *edate=@"may 6";
NSString *etime=@"10:30";
int admts=5;
NSString *ima=ticobj.iimg;
sqlite3 *database;
databaseName = @"smbhDB.sql";
sqlite3_stmt *addStatement ;
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
if(addStatement == nil) {
    const char *sql ="insert into tickets (admittance, venue, event, date, time, imagedata) Values (?,?,?,?,?,?)";

    if(sqlite3_prepare_v2(database, sql, -1, &addStatement, NULL) != SQLITE_OK)
        NSAssert1(0, @"444 Error while creating add  statement. '%s'", sqlite3_errmsg(database));
}

sqlite3_bind_int(addStatement,1,admts);

sqlite3_bind_text(addStatement, 2, [venue UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStatement, 3, [event UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStatement, 4, [edate UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStatement, 5, [etime UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStatement, 6, [ima UTF8String], -1, SQLITE_TRANSIENT);

if(SQLITE_DONE != sqlite3_step(addStatement))
    NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
if(sqlite3_prepare_v2(database, sql, -1, &Statement, NULL) == SQLITE_OK) {
sqlite3_exec(database, sql, -1, &Statement, NULL);
}

sqlite3_reset(addStatement);

Why can't I execute this code?

为什么我不能执行这段代码?

2 个解决方案

#1


Where is

sqlite3_open([databasePath UTF8String], &database); ?

sqlite3_open([databasePath UTF8String],&database); ?

You can't work with a closed database.

您无法使用已关闭的数据库。

#2


-(BOOL)insertDatabaseValue:(SignIn *)objFavourie isUpdate:(BOOL)update
{

BOOL returnValue = YES;
sqlite3_stmt *insertStmt = nil;
sqlite3  *database = nil;

if (sqlite3_config(SQLITE_CONFIG_SERIALIZED) == SQLITE_OK){
    returnValue = NO;
}



if (sqlite3_open([DataBasePath UTF8String], &database) == SQLITE_OK){



    if(insertStmt == nil) {
        NSString *aString;
        if(!update)
            aString =[NSString stringWithFormat:@"INSERT INTO Sanjay('Name', 'Password') Values(?, ?)"];

        else 
            aString =[NSString stringWithFormat:@"UPDATE Sanjay SET Password = ? where 'Name'=%@",objFavourie.strName]; 


        const char *sql = [aString UTF8String];

        if(sqlite3_prepare_v2(database, sql, -1, &insertStmt, NULL) != SQLITE_OK)
        {
            NSLog(@"Error while creating insert :%s add statement.", sqlite3_errmsg(database));
            returnValue = NO;
        }
    }
    if(sqlite3_bind_text(insertStmt, 1, [objFavourie.strName UTF8String], -1, SQLITE_TRANSIENT) != SQLITE_OK){
        returnValue = NO;
    }
    if(sqlite3_bind_text(insertStmt, 2, [objFavourie.strPassword UTF8String], -1, SQLITE_TRANSIENT) != SQLITE_OK) {
        returnValue = NO;
    }

    if(SQLITE_DONE != sqlite3_step(insertStmt)){
        NSLog(@"Error while inserting into '%s'", sqlite3_errmsg(database)); 
        returnValue = NO;
    }
    sqlite3_reset(insertStmt);    


    if (insertStmt) {
        sqlite3_finalize(insertStmt);
        insertStmt = nil;
    }

    sqlite3_close(database);
    database = nil;
}
else {
    returnValue = NO;
}

return returnValue; 

}

#1


Where is

sqlite3_open([databasePath UTF8String], &database); ?

sqlite3_open([databasePath UTF8String],&database); ?

You can't work with a closed database.

您无法使用已关闭的数据库。

#2


-(BOOL)insertDatabaseValue:(SignIn *)objFavourie isUpdate:(BOOL)update
{

BOOL returnValue = YES;
sqlite3_stmt *insertStmt = nil;
sqlite3  *database = nil;

if (sqlite3_config(SQLITE_CONFIG_SERIALIZED) == SQLITE_OK){
    returnValue = NO;
}



if (sqlite3_open([DataBasePath UTF8String], &database) == SQLITE_OK){



    if(insertStmt == nil) {
        NSString *aString;
        if(!update)
            aString =[NSString stringWithFormat:@"INSERT INTO Sanjay('Name', 'Password') Values(?, ?)"];

        else 
            aString =[NSString stringWithFormat:@"UPDATE Sanjay SET Password = ? where 'Name'=%@",objFavourie.strName]; 


        const char *sql = [aString UTF8String];

        if(sqlite3_prepare_v2(database, sql, -1, &insertStmt, NULL) != SQLITE_OK)
        {
            NSLog(@"Error while creating insert :%s add statement.", sqlite3_errmsg(database));
            returnValue = NO;
        }
    }
    if(sqlite3_bind_text(insertStmt, 1, [objFavourie.strName UTF8String], -1, SQLITE_TRANSIENT) != SQLITE_OK){
        returnValue = NO;
    }
    if(sqlite3_bind_text(insertStmt, 2, [objFavourie.strPassword UTF8String], -1, SQLITE_TRANSIENT) != SQLITE_OK) {
        returnValue = NO;
    }

    if(SQLITE_DONE != sqlite3_step(insertStmt)){
        NSLog(@"Error while inserting into '%s'", sqlite3_errmsg(database)); 
        returnValue = NO;
    }
    sqlite3_reset(insertStmt);    


    if (insertStmt) {
        sqlite3_finalize(insertStmt);
        insertStmt = nil;
    }

    sqlite3_close(database);
    database = nil;
}
else {
    returnValue = NO;
}

return returnValue; 

}