1

我正在尝试编写一个 C# 程序,当用户在文本框中输入一些数据并单击“保存”按钮时,信息会存储在某种文件中,当下次打开程序时,信息会自动加载进去。

我正在使用 Visual C# express。在不需要 MySQL、MSSQL 或 Access 等某种数据库的情况下,最好的方法是什么?

如果唯一的方法或最简单的方法是数据库,我宁愿使用 Access。如果是这样,该程序的用户是否需要安装 Access 才能让我的程序在他们的计算机上运行?如果我使用另一个数据库怎么办?

ps

我忘了提,我宁愿用户不能访问这个文件并轻松地阅读内容。没有加密的文本文件很容易打开。有什么方法可以加密吗?此外,如果我使用像“:”这样的分隔符,那么这意味着用户不能使用该字符。那么还有什么办法吗?

谢谢!

4

4 回答 4

3

通过添加关键字使您的用户数据可序列化:

[Serializable]

在您的数据结构之上。加载对话框时,从磁盘加载序列化结构,离开对话框时,保存数据结构。

从样式的角度来看,您可能不应该让对话框更改数据,直到对话框关闭(如果它是模态的)。

保存:

    private bool Save(String inFileName, MyObject inObject){
        try {
            FileStream theStream = File.Open(inFileName, FileMode.Create);

            BinaryFormatter theFormatter = new BinaryFormatter();
            theFormatter.Serialize(theStream, inObject);//add it to the end there
            theStream.Dispose();
            theStream.Close();
        } catch{
            return false;
        }
        return true;

    }

装载:

    private MyObject Read(String inFileName){
        MyObject theReturn = null;
        try {

            FileStream theStream = File.Open(inFileName, FileMode.Open, FileAccess.Read);                

            BinaryFormatter theFormatter = new BinaryFormatter();
            theReturn = (CImageData)theFormatter.Deserialize(theStream);//add it to the end there
            theStream.Dispose();
            theStream.Close();
        }
        catch {
            return null;
        }
        return theReturn;
    }

您也可以在流上使用“使用”,但我认为这段代码非常简单。这也意味着您可以在 MyObject 中添加更多项目。

编辑:对于加密,您可以添加 AES 或类似的东西。这对您来说可能有点过头了,将文件保存为二进制文件可能使它可以被记事本之类的东西读取,但不容易编辑。这是关于真正加密的冗长解释:

http://msdn.microsoft.com/en-us/magazine/cc164055.aspx

于 2009-01-13T00:47:35.963 回答
2

Sql Compact Edition将隐藏数据,使其易于访问(并且是免费的)。您还可以使用密码保护 CE 数据库。SQL CE 数据库完全包含在 .SDF 文件中,例如 Access,因此您可以复制 .sdf 文件而不必担心网络连接等问题。

于 2009-01-13T00:56:08.007 回答
1

如果您的应用程序仅供一个人使用,那么只需将您的数据存储在一个文件中(XML 会给您一些结构)

如果您的应用程序将被多人使用并且在他们之间共享数据,那么数据库是您的最佳选择。如果您使用数据库,那么是的,您将需要在您的用户计算机上安装一个数据库,尽管可以对您的用户透明地执行此操作,因为您最好使用嵌入式数据库,像 MySQL 这样的数据库将是您的最佳选择赌注。

(编辑:数据库实际上不必在用户计算机上,但他需要能够从他的计算机上看到它)

于 2009-01-13T00:50:11.607 回答
0

如果它非常简单,那么您可以将其放在纯文本文件中。对于更多结构化数据,您可以考虑将其存储为 CSV 并对其进行解析或创建 XmlDocument 并将其保存到磁盘。

于 2009-01-13T00:47:04.513 回答