【问题标题】:windows phone 8 edit/update local databasewindows phone 8 编辑/更新本地数据库
【发布时间】:2013-04-03 05:47:26
【问题描述】:

WP8、VS12 和 C#

我已经开始创建一个应用程序,它允许我使用 LINQ to SQL 将关系数据存储在本地数据库中。

接下来我想做的是能够更新现有数据...我会单击应用栏中的图标并转到以前保存的数据,以便进行更新。

我查看了 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();
    }

如果有人能指出一个工作示例或帮助我连接更新数据的能力,我将不胜感激。

非常感谢,

k

【问题讨论】:

    标签: sql linq windows-phone-8 local-storage


    【解决方案1】:

    你好,不知道你是否还在为你的项目工作,但我已经为你找到了解决方案。

    从您的网站 (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)\Microsoft SDKs\Windows
    Phone\v8.0\Tools\IsolatedStorageExplorerTool
    SHIFT + 右键 => 在此处打开提示
    ISETool.exe ts xd {ID APP HERE FROM MANIFEST } {PATH}
    不要忘记在模拟器或设备上安装您的应用(不是调试)

    现在在您的路径中,您有一个可以使用 SQL Server Compact Edition 打开的 .sdf。

    在更新前后执行此命令并检查差异。

    【讨论】:

      【解决方案2】:

      使用 Sqlight -- 这是一个很好的例子 http://code.msdn.microsoft.com/wpapps/Using-Sqlite-with-WP8-52c3c671

      【讨论】:

        【解决方案3】:

        更新数据库中的数据的重要一点是,您使用相同的对象来处理从数据库中产生查询并且不要复制它。您可以将查询结果中的对象传递给其他对象或函数,但要确保它仍然是堆上的同一个对象。就在这种情况下,SubmitChanges 有效。我第一次做错了,把它复制到页面对象,然后传回去,SubmitChanges 不起作用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-08
          • 1970-01-01
          相关资源
          最近更新 更多