2015-02-23 473 views
0

我正在開發一個Windows Phone 8的應用程序,我正在使用SQLite來存儲數據(我對這兩個區域都是新手),並且在嘗試使用SQLite時遇到了問題插入數據。對於我的解決方案,我使用MVVM模式,所以我想也許我的插入方法做錯了,因爲我試圖使用泛型類型編碼我的CRUD操作,這些類型可以與所有Model類一起使用,而不是使用6-7插入方法對於每個Model類,或者可能是我在使用ActionCommand的保存按鈕中使用插入方法的方式。我完全失去了這一切。我已經進行了調試,並從我可以看到我的連接等等都很好。與WP8的SQLite插入問題

下面是我嘗試插入時得到的消息;

A first chance exception of type 'SQLite.SQLiteException' occurred in SleepTracker.DLL 
    at SQLite.SQLite3.Prepare2(Database db, String query) 
    at SQLite.PreparedSqlLiteInsertCommand.Prepare() 
    at SQLite.PreparedSqlLiteInsertCommand.ExecuteNonQuery(Object[] source) 
    at SQLite.SQLiteConnection.Insert(Object obj, String extra, Type objType) 
    at SQLite.SQLiteConnection.Insert(Object obj) 
    at SleepTracker.DatabaseResources.DBHelper.<>c__DisplayClass4`1.<Insert>b__0() 
    at SQLite.SQLiteConnection.RunInTransaction(Action action) 
    at SleepTracker.DatabaseResources.DBHelper.Insert[T](T obj) 

這裏是我的插入代碼和我如何使用它;

public void Insert<T>(T obj) where T : new() 
{ 
    using (var conn = new SQLiteConnection(App.ConnectionString)) 
    { 
     conn.RunInTransaction(() => 
    { 
     conn.Insert(obj); 
     }); 
    } 
} 

而我如何在我的按鈕中使用它;

public ICommand SaveButtonCommand 
{ 
    get 
    { 
     return _saveButtonCommand 
       ?? (_saveButtonCommand = new Resources.ActionCommand(() => 
       { 
        Models.SleepTrackerModel insertSleepData = new Models.SleepTrackerModel 
        { 
         Date = SleepDate, 
         SleepTime = SleepTime, 
         WakeTime = WakeTime, 
         Duration = SleepDuration, 
         Rating = SleepRating 
        }; 
        _dbHelper.Insert<Models.SleepTrackerModel>(insertSleepData); 
       })); 
    } 
} 

我完全失去了如何解決這個問題,所以任何幫助都會很棒。

另外,我試過按照這個教程; http://dotnetslackers.com/articles/silverlight/Windows-Phone-7-Native-Database-Programming-via-Sqlite-Client-for-Windows-Phone.aspx但是當我嘗試ExecuteNonQuery(obj);在插入方法中,我得到一個錯誤,說ExecuteNonQuery不帶1個參數。我需要用這個還是其他的東西來更新SQLite.cs類?

謝謝。

+0

看看異常的細節。它將包含一個來自SQLite的錯誤字符串,解釋出錯的地方。 – Cameron 2015-02-23 21:42:48

回答

1

好吧,我想我已經解決了它。我又投入了幾個TRY-CATCHES,並注意到它實際上並沒有創建我的表,所以無處插入數據。我認爲造成這種情況的原因是,當我以模型類型的形式通過模型類時,它以某種方式搞砸了,所以我剛剛爲Models文件添加了一個使用,然後在SleepTrackerModel中作爲類型傳入,似乎已經解決了問題(我希望),並且我沒有得到任何例外。