2011-07-05 70 views
0

我真的很沮喪的錯誤。我花了兩天的時間來解決這個問題。但它沒有得到解決,當時從數據庫獲取數據沒有問題。但當火災插入statement.I得到這個錯誤:在嘗試插入到iPhone上的sqlite數據庫時聲明失敗

斷言失敗 - [NewJourney addJourney],/Users/HarishYadav/Desktop/JourneyMapper/Journey/NewJourney.m:114 2011-07-05 17: 23:13.739旅程[24328:207] *終止應用程序,由於未捕獲的異常'NSInternalInconsistencyException',原因:'插入數據時出錯。 '數據庫已鎖定」在第一擲 *調用堆棧:

這裏是我的數據庫插入值碼

- (無效)addJourney { 如果(addStmt ==無) {

const char * sql = "insert into UserJourney(JourneyName,LocationName,Description) Values (?,?,?)"; 
    if (sqlite3_prepare_v2(database, sql, -1,&addStmt ,NULL) != SQLITE_OK) 

     NSAssert1(0,@"Error while creating add statement. '%s'",sqlite3_errmsg(database)); 

    } 
    sqlite3_bind_text(addStmt, 1, [journeyname UTF8String], -1,SQLITE_TRANSIENT); 
    sqlite3_bind_text(addStmt, 2, [journeylocation UTF8String],-1, SQLITE_TRANSIENT); 
    sqlite3_bind_text(addStmt, 3, [journeydescription UTF8String],-1 , SQLITE_TRANSIENT); 

    if (SQLITE_DONE != sqlite3_step(addStmt)) 

     NSAssert1(0,@"Error while inserting data. '%s'",sqlite3_errmsg(database)); 

    else 

     journeyID = sqlite3_last_insert_rowid(database); 

    sqlite3_reset(addStmt); 

}

什麼是這個

問題3210

在此先感謝

+0

看起來數據庫是從其他地方訪問的。這就是爲什麼它說數據庫被鎖定。嘗試調試你的應用程序使用NSZombie。我更喜歡將FMDB用於sqlite目的。 –

+0

是的我的數據庫從其他類訪問 – Ajay

+0

Jignesh是正確的使用finalize語句,看看它是否有效。但我更喜歡FMDB for sqlite。實現簡單的調試非常容易,而且您不必爲SQLite而苦苦掙扎。 FMDB將處理所有的事情。 –

回答

3

你需要在你之後使用的完成您的發言

sqlite3_finalize(聲明);

在您使用數據庫交互的每個函數中。

+0

我沒有得到你可以你更清楚我請 – Ajay

+0

sqlite3_finalize函數提交所有事務到數據庫,如果你沒有做sqlite3_finalize後插入/更新/選擇數據到/從數據庫,sqlite將創建日誌文件,這個文件將成爲暫時可用,當你做sqlite3_finalize時,它會被提交到數據庫。與此同時,它將被鎖定。 – iMOBDEV

+0

我有函數+(void)finalize語句 { \t if(database)sqlite3_close(database); \t if(database)sqlite3_finalize(deleteStmt); \t if(database)sqlite3_finalize(addStmt); \t if(database)sqlite3_finalize(detailStmt); \t if(database)sqlite3_finalize(updateStmt); \t } – Ajay

0

檢查您的數據庫是否打開?

if(sqlite3_open([temppath UTF8String], &database) == SQLITE_OK) 
+0

@ Rakesh Bhatt如何檢查數據庫是否打開? – Ajay

+0

通過以上條件... –

+0

好吧你有任何其他示例項目,幫助我添加,刪除,更新和行項目上顯示幫助我。我試試這個示例代碼項目http://www.iphonesdkarticles.com/2008 /10/sqlite-tutorial-loading-data-as.html。你有沒有其他的鏈接可以幫助我擺脫這種狀況。 – Ajay