2016-12-30 71 views
0

當我使用我的數據庫時出現警告消息sqlite的。它出現在「&數據庫」 任何想法?將'sqlite3 * const *'(又名'struct sqlite3 * const *')傳遞給'sqlite3 **'類型的參數(又名'struct sqlite3 **')丟棄限定符

sqlite3 *database; 

NSLog(@"Open Database : %@", path); 

      // Open the database. The database was prepared outside the application. 
      if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) 
      { 
       NSLog(@"Open Database OK"); 


       NSString *selectSQL = [NSString stringWithFormat:@".... 
+1

你在哪裏定義了獲取db路徑的方法? –

+3

嗯。我不能用這段代碼產生這個錯誤。如果我這樣定義數據庫,那麼我會得到精確的編譯時錯誤消息,儘管如此:'sqlite3 * const數據庫;'。現在,我認爲你不會這樣做,也不會與我們分享,但我懷疑你定義了'database'。但問題不在於上述代碼。也許你可以分享更多關於你有這個代碼的地方的詳細信息等等。 – Rob

+0

Thx爲你提供幫助,這是因爲我把數據庫的使用放到了dispatch_async中,並且在dispatch_async之外聲明瞭數據庫。我不知道我不能這樣做...... – Claudio

回答

0

答:這是因爲我把數據庫的聲明放在dispatch之外。

這裏是我以前的代碼比樓上的更完整:

sqlite3 *database; 
NSString *path = [[self documentsDirectory] stringByAppendingPathComponent:@"tva.sqlite"]; 

dispatch_queue_t searchTVAQueue = dispatch_queue_create("searchTVA", NULL); 
     dispatch_async(searchTVAQueue, ^{ 
NSLog(@"Open Database : %@", path); 

      if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) 
      { 
       NSLog(@"Open Database OK"); 

       NSString *selectSQL = [NSString stringWithFormat:@".... 
       ... 

這裏是不錯的代碼:

dispatch_queue_t searchTVAQueue = dispatch_queue_create("searchTVA", NULL); 
     dispatch_async(searchTVAQueue, ^{ 

sqlite3 *database; 
NSString *path = [[self documentsDirectory] stringByAppendingPathComponent:@"tva.sqlite"]; 

NSLog(@"Open Database : %@", path); 

      if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) 
      { 
       NSLog(@"Open Database OK"); 

       NSString *selectSQL = [NSString stringWithFormat:@".... 
       ... 

我只包括直接在dispatch_async數據庫聲明。