Nagendra K
Nagendra K

Reputation: 1

Sqlite update command is not working

When i try to update a table its giving me a

error message : near "(": syntax error

Please anybody suggest me to rectify this issue.

I am updating a table when i click the save button (Bar button item) on the tool bar which is placed below.

The problem is it's always going to else statement of sqlite3_step.

I am not getting whats the exact problem for this issue and the above mentioned error.

Any suggestions would be appreciated.

Following is my update method :

   if ([databaseManager didExistDatabaseInDocumentDirectory] == YES)
    {
        const char *dbpath = [[databaseManager getDatabasePathFromDocument] UTF8String];

        sqlite3_stmt *stmt;
        if (sqlite3_open(dbpath, &scanningDB) == SQLITE_OK)
        {
            const char *update_stmt1 = "UPDATE FILES SET (documentType,orderNumber) VALUES (?,?) WHERE ID = ?";
            sqlite3_prepare_v2(scanningDB, update_stmt1, -1, &stmt, NULL);

            sqlite3_bind_text(stmt, 1, [str UTF8String], -1, SQLITE_TRANSIENT);
            sqlite3_bind_text(stmt, 2, [str1 UTF8String], -1, SQLITE_TRANSIENT);
            sqlite3_bind_int(stmt, 3,[num intValue]);

            if(sqlite3_step(stmt)==SQLITE_DONE)
            {
                sqlite3_reset(stmt);
                NSLog(@"Record Updated Successfully");

            }
            else
            {
                NSLog(@"Could not Update Record");
                NSLog(@" error message %s",sqlite3_errmsg(scanningDB));
                sqlite3_finalize(stmt);
                sqlite3_close(scanningDB);
                return NO;
            }
            sqlite3_finalize(stmt);
            sqlite3_close(scanningDB);

        }
        else
            return NO;
    }
    else
        return NO;

Upvotes: 0

Views: 466

Answers (2)

Ketan P
Ketan P

Reputation: 4379

Please correct your query with the following.

const char *update_stmt1 = "UPDATE FILES SET documentType = ? ,orderNumber = ? WHERE ID = ?

Hope this will help you.

Upvotes: 1

Ramesh_T
Ramesh_T

Reputation: 1261

Your update query is wrong.

UPDATE FILES SET (documentType,orderNumber) VALUES (?,?) WHERE ID = ?

Syntax:

UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];

Your query:

UPDATE FILES SET documentType =?, orderNumber =? where ID =?, documentTypeString, Yourordernumber, yourID

Sample:

   - (void) update
        {
            if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK)
            {
                if(updateStatement == nil)
                {
                    const char *sql = "UPDATE FILES SET documentType =?, orderNumber =? where ID =?";
                    if(sqlite3_prepare_v2(database, sql, -1, & updateStatement, NULL) != SQLITE_OK)
                        NSAssert1(0, @"Error while creating update statement. '%s'", sqlite3_errmsg(database));
                }

               sqlite3_bind_text(documentType
, 1, [comment UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_text(orderNumber
, 2, [categoria UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_int(ID, 3, id);


                if(SQLITE_DONE != sqlite3_step(updateStatement))
                    NSAssert1(0, @"Error while updating data. '%s'", sqlite3_errmsg(database));
                else
                    //SQLite provides a method to get the last primary key inserted by using sqlite3_last_insert_rowid
                    //noteID = sqlite3_last_insert_rowid(database);

                    //Reset the update statement.
                    sqlite3_reset(updateStatement);
                sqlite3_close(database);
                deleteStatement = nil;
            }
            else
                sqlite3_close(database);
        }

Basic SQLite tutorial: http://www.tutorialspoint.com/sqlite/index.htm

Upvotes: 0

Related Questions