如何在应用程序中保存数据?

Posted

技术标签:

【中文标题】如何在应用程序中保存数据?【英文标题】:How to save data within the Application? 【发布时间】:2014-06-14 05:20:24 【问题描述】:

我正在创建一个基本的待办事项程序。我想保存用户创建的任务列表。现在我尝试将它们保存为文本文件,但我不希望这样。我想要它,以便我可以保存用户在程序中创建的任务而不是外部文本文件,然后检索这些保存的文件并将它们显示在文本文件中。

本质上,我需要一种无需依赖数据库即可保存数据的方法。

GeeTeeDee 就是一个很好的例子。它似乎将其文件和数据等保存在程序中而不是外部文本文件中。(我假设这是因为我似乎找不到它们。我可能是错的)

更新

我正在做一些搜索可以发现这个:Click here!!!

但问题是我对它的工作原理感到困惑。有人可以为我清理东西吗?将不胜感激,因为这正是我正在寻找的。​​p>

【问题讨论】:

您必须将数据存储在某个地方——文本文件、数据库或其他一些持久存储机制。一旦程序终止,内存中的所有数据都会丢失。 我同意蒂姆的观点,在我看来,如果不保存plain Text 文件,您可以将它们保存到 xml 文件,使用xml serailization 读写更方便,或者您可以将值存储到 @ 987654326@ 仅仅因为你找不到文件并不意味着他们没有这样做(程序不写入 EXE)。 this link might explain为什么你找不到他们。 My.Settings 是一种选择。 This answer 展示了如何序列化一小部分类对象,这些类对象将适用于中小型数据集。具体答案取决于您确切保存的内容。 【参考方案1】:

“代码项目”示例将数据保存在扩展名为 [*.brd] 的外部文件中。

您可以使用 XmlSerializer 从扩展名为 xml、brd 或其他任何内容的外部 xml 文件中保存和加载数据。

试试下面的代码,在一个form1中添加三个按钮(Button1,Button2,Button3)和一个DataGridView1,粘贴代码并运行。

    按下“动态添加数据”按钮或/和直接从 DataGridView1 添加、编辑、删除行。 按保存数据。 关闭并运行程序 按加载数据。
导入 System.Xml.Serialization
导入系统.IO
班级表格1
    暗淡作为数据集
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) 处理 MyBase.Load
        Button1.Text = "加载数据"
        Button2.Text = "动态添加数据"
        Button3.Text = "保存数据"
        '创建数据集
        ds = 创建数据集()
        '设置DataGridView1
        DataGridView1.DataSource = ds.Tables("人")
    结束子
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) 处理 Button1.Click
        LoadFromXMLfile("c:\temp\persons.xml")
    结束子
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) 处理 Button2.Click
        动态添加数据到数据集(ds)
    结束子
    Private Sub Button3_Click_1(sender As System.Object, e As System.EventArgs) 处理 Button3.Click
        SaveToXMLFile("c:\temp\persons.xml", ds)
    结束子
    私有函数 CreateDataset() 作为数据集
        将 dataset1 调暗为新的 DataSet("Persons")
        将 table1 调暗为新 DataTable("Person")
        table1.Columns.Add("Id")
        table1.Columns.Add("FName")
        table1.Columns.Add("年龄")
        '...
        dataset1.Tables.Add(table1)
        返回数据集1
    结束功能
    Private Sub AddDataToDataSetDynamically(d As DataSet)
        d.Tables("Person").Rows.Add(1, "Andrew", "46")
        d.Tables("Person").Rows.Add(2, "Nicky", "43")
        d.Tables("Person").Rows.Add(3, "Helen", "15")
    结束子
    Private Sub SaveToXMLFile(filename As String, d As DataSet)
        Dim ser As XmlSerializer = New XmlSerializer(GetType(DataSet))
        Dim writer As TextWriter = New StreamWriter(filename)
        ser.Serialize(作家,d)
        writer.Close()
    结束子
    Private Sub LoadFromXMLfile(文件名作为字符串)
        If System.IO.File.Exists(filename) Then
            Dim xmlSerializer As XmlSerializer = New XmlSerializer(ds.GetType)
            Dim readStream As FileStream = New FileStream(filename, FileMode.Open)
            ds = CType(xmlSerializer.Deserialize(readStream), DataSet)
            readStream.Close()
            DataGridView1.DataSource = ds.Tables("人")
        别的
            MsgBox("文件未找到!添加数据并先按保存按钮。", MsgBoxStyle.Exclamation, "")
        万一
    结束子
结束类

将该代码添加到 form1 并将数据获取到文本框(添加 button4、textbox1)

 私有函数 PrintRows(dataSet As DataSet) As String
        Dim s As String = ""
        将此表调暗为数据表
        对于 dataSet.Tables 中的每个 thisTable
            暗淡的行作为 DataRow
            对于 thisTable.Rows 中的每一行
                将列暗淡为 DataColumn
                对于 thisTable.Columns 中的每一列
                    s &= 行(列)&“”
                下一栏
                s &= vbCrLf
            下一行
        下一张这张表
        返回
    结束功能

    Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) 处理 Button4.Click
        TextBox1.Text = PrintRows(ds)
    结束子

【讨论】:

谢谢你。这让它变得容易多了。

以上是关于如何在应用程序中保存数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在安卓应用中保存数据

如何在 Android 中保存数据

如何在 Windows 中保存应用程序特定数据? [关闭]

如何保存数据直到应用程序在android中卸载?

如何在 Android 中保存数据

即使应用程序将被删除,如何在 NSUserDefaults 中保存数据?