如何在应用程序中保存数据?
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) 结束子
【讨论】:
谢谢你。这让它变得容易多了。以上是关于如何在应用程序中保存数据?的主要内容,如果未能解决你的问题,请参考以下文章