2013-04-03 55 views
0

WP8,VS12,& C#的Windows Phone 8編輯/更新本地數據庫

我開始創建一個應用程序,讓我來存儲使用LINQ to SQL本地數據庫的關係數據。

接下來我要做的就是更新現有的數據...我會點擊appbar中的一個圖標,並將其帶到之前保存的數據中,以便更新它。

我看MSDN上... Local database for Windows Phone,我想知道,如果下面的代碼我在部分請參閱使用數據庫>更新數據是有效的給予我的LINQ to SQL設置。如果是這樣,我怎麼去添加這個代碼來允許更新?

protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e) 
    { 

    //Call base method 
    base.OnNavigatedFrom(e); 

    //Save changes to the database 
    toDoDB.SubmitChanges(); 
    } 

如果任何人都可以指向一個工作示例或幫助我鉤到更新數據的能力,我將不勝感激。

許多感謝,

ķ

回答

1

Yhello,如果你還在你的項目說不上來,但我要告訴你一個解決方案。

從您的網站(MSDN),在這裏我找到了什麼:

首先,查詢數據庫,因爲這是要更新的對象。然後,根據需要修改對象。最後,調用SubmitChanges方法將更改保存到本地數據庫。

所以,你需要查詢您的數據庫(例如,從我自己的VB.net代碼)

Dim monContact = From contact As Authentification In bddGLI.TableAuth Select contact 

執行查詢並收集

Dim resultCollection = New ObservableCollection(Of Authentification)(monContact) 

貫穿在得到結果此集合與ForEach循環並修改您的對象

For Each elem As Authentification In resultCollection 
       elem.Mail = txtEmail.Text 
       elem.Nom = txtNom.Text 
       elem.Prenom = txtPrenom.Text 
      Next 

別忘了保存你的分區

bddGLI.SubmitChanges() 

現在,如何檢查你是否真的更新了你的數據? 當我創建我的數據庫,我插入一些數據測試在我的表

Using db As New GeoLiveInfoDataContext(GeoLiveInfoDataContext.DBConnectionString) 
      If db.DatabaseExists() = False Then 
       db.CreateDatabase() 
       Dim contact As New Authentification 
       With contact 
        .Nom = "" 
        .Prenom = "" 
        .Mail = "" 
       End With 
       db.TableAuth.InsertOnSubmit(contact)     
       db.SubmitChanges() 
      End If 
     End Using 

http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh286408(v=vs.105).aspx
轉到C:\ Program Files文件(x86)的\微軟的SDK \的Windows
電話\ 8.0 \工具\ IsolatedStorageExplorerTool
Shift +右CLIC =>打開提示這裏
ISETool.exe TS XD {ID APP這裏離清單} {PATH}
不要忘記在模擬器或設備(不調試)

安裝你的應用

Now在你的道路上,你有一個。sdf可以使用SQL Server Compact Edition打開。

更新前後執行此命令並檢查差異。

1

更新數據庫中數據的重要之處在於,您處理的是與數據庫中的查詢相同的對象,並且不會將其複製。您可以將查詢結果中的對象傳遞給其他對象或函數,但要確保它仍然是堆上的同一對象。就在這種情況下,SubmitChanges就起作用了。我第一次做錯了,並將其複製爲頁面對象,然後將其傳回,並且SubmitChanges不起作用。