2016-05-31 1 views
-2

私のiOsアプリケーションからsqliteデータベースの複数のステートメントを更新する必要があります。そのために私は次の文字列を書いています。iOSアプリケーションからセミコロンを使用したSqliteマルチステートメント

query = @"UPDATE channels set sts = 'A' , isowner = '1' WHERE channelid=6798;UPDATE channels set sts = 'A' , isowner = '1', srl = '175' WHERE channelid=6795;"; 
NSLog(@"query %@",query); 
[dbManager executeQuery:query]; 

文字列/ statmentをセミコロンで文字列として作成しました。 sqliteブラウザ/エディタでは完全に動作しますが、iOSアプリケーションでは動作しません。文の実行中に何のエラーも投げられません。私は自分のコードで間違いを見つけません。 (私の最善の知識によると)。誰かが私を助けることができます、なぜそれは動作していないのですか?おかげさまで

+0

は、クエリをseperatingで実行しようとしましたか? –

+0

1つ1つのクエリを実行します。 –

+0

@UmairAfzal、Bhadresh-Mulsaniya、返信ありがとうございます。ひとつひとつがうまくいっていますが、はるかに時間がかかります。私は例えば2文しか書いていませんが、リアルタイムでは50文以上です。 –

答えて

3

私が検索し、これを使用して、それを解決した:

- (BOOL)executeBatch:(NSString *)sql error:(NSError**)error 
{ 
    char* errorOutput; 

    sqlite3 *sqlite3Database; 

    // Set the database file path. 
    NSString *databasePath = [self.documentsDirectory stringByAppendingPathComponent:self.databaseFilename]; 

    BOOL openDatabaseResult = sqlite3_open([databasePath UTF8String], &sqlite3Database); 

    if(openDatabaseResult == SQLITE_OK) 
    { 
     int responseCode = sqlite3_exec(sqlite3Database, [sql UTF8String], NULL, NULL, &errorOutput); 

     if (errorOutput != nil) 
     { 
      *error = [NSError errorWithDomain:[NSString stringWithUTF8String:errorOutput] 
             code:responseCode 
            userInfo:nil]; 
      return false; 
     } 
    } 
    return true; 
} 
関連する問題