0

テーブルを更新する必要がありsqliteます。だから私はこのようなクエリを書きました

 NSString *updateSQL = [NSString stringWithFormat: @"UPDATE LOCALPLAYLISTSONGS SET SONGNAME=\"%@\",SONGPATH=\"%@\" WHERE PLAYLISTNAME=\"%@\"",SongTitle,songPath,playlistName];

    const char *update_stmt = [updateSQL UTF8String];
    sqlite3_prepare_v2(database, update_stmt, -1, &statement, NULL);
    if (sqlite3_step(statement) == SQLITE_DONE)
    {
        status=@"song Added";
    }
    else
    {
        status=@"Error occured";
    }

問題は、ステータスが常に Error Occured と表示されることです。私のクエリの問題は何ですか。を見せて下さい

ありがとう

アップデート

    -(NSString *)UpdateLocalPlaylist :(NSString *)playlistName :(NSString *)SongTitle :  

    (NSString *)songPath
     {
         NSLog(@"passed");
         NSString *status;


    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
    NSString *documentsDir = [paths objectAtIndex:0];
    NSString *dbPath=[[NSString alloc]initWithString:[documentsDir stringByAppendingPathComponent:@"LocalSongs.sqlite"]];

    NSLog(@"Database Path %@",dbPath);

    sqlite3_stmt    *statement;
    if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {

        NSLog(@"open");

        NSString *updateSQL = [NSString stringWithFormat: @"UPDATE LOCALPLAYLISTSONGS SET SONGNAME=%@,SONGPATH=%@ WHERE PLAYLISTNAME=%@",SongTitle,songPath,playlistName];

        const char *update_stmt = [updateSQL UTF8String];
        sqlite3_prepare_v2(database, update_stmt, -1, &statement, NULL);
        if (sqlite3_step(statement) == SQLITE_DONE)
        {
            status=@"song Added";
        }

        else
        {
            status=@"Error occured";
        }

        return status;

    }

    else
        return @"Error Occured";

}
4

4 に答える 4

1

SQL では、文字列に二重引用符 (") ではなく単一引用符 (') を使用します。二重引用符は、オブジェクト名 (テーブル、列など) にのみ使用します。

于 2013-10-17T06:53:48.870 に答える
0

これも試してみて、私に知らせてください

この形式でクエリを宣言します (前に宣言したように)

NSString *updateSQL = [NSString stringWithFormat: @"UPDATE LOCALPLAYLISTSONGS SET SONGNAME=\"%@\",SONGPATH=\"%@\" WHERE PLAYLISTNAME=\"%@\"",SongTitle,songPath,playlistName];

チェックするためにこのような条件を追加しました

if (sqlite3_prepare_v2(database, update_stmt, -1, &statement, NULL)) == SQLITE_OK)
            {
                if (sqlite3_step(statement) == SQLITE_DONE)
                {
                    status=@"song Added";
                }

                else
                {
                    status=@"Error occured";
                }
            }
于 2013-10-17T07:22:43.737 に答える
0

あなたはこれを試してください:

update_stmt = nil;
    NSString *updateSQL = [NSString stringWithFormat: @"UPDATE LOCALPLAYLISTSONGS SET SONGNAME=%@,SONGPATH=%@ WHERE PLAYLISTNAME=%@",SongTitle,songPath,playlistName];
于 2013-10-17T06:48:57.840 に答える