Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 存储运行时必须使用的数据_C#_Sql_Performance_Runtime - Fatal编程技术网

C# 存储运行时必须使用的数据

C# 存储运行时必须使用的数据,c#,sql,performance,runtime,C#,Sql,Performance,Runtime,小结:如何最好地存储运行时需要访问的数据(但不存储在内存中),而不使其他人难以编辑数据 我一直在研究几种不同的方法来存储必须在运行时访问的数据,但没有一种解决方案与我的问题相关。如果在读了这篇文章后,你看到另一篇文章回答了我的问题,请把我链接到它,我很乐意去看看 我正在创建一个程序来修改一些视频游戏。这款应用背后的主要理念是在游戏更新方面的灵活性。这意味着我必须使存储所有地址的文件易于每个人访问。目前,我将数据存储在文本文件中,如下所示: 0x00000000 Description 然后,我

小结:如何最好地存储运行时需要访问的数据(但不存储在内存中),而不使其他人难以编辑数据

我一直在研究几种不同的方法来存储必须在运行时访问的数据,但没有一种解决方案与我的问题相关。如果在读了这篇文章后,你看到另一篇文章回答了我的问题,请把我链接到它,我很乐意去看看

我正在创建一个程序来修改一些视频游戏。这款应用背后的主要理念是在游戏更新方面的灵活性。这意味着我必须使存储所有地址的文件易于每个人访问。目前,我将数据存储在文本文件中,如下所示:

0x00000000 Description
然后,我的应用程序将文本文件加载到字典列表中,使用前8个字符(有一个删除0x的检查,并确保该值能够被解析)作为uint值,行的其余部分存储为键(每个键都是唯一的,有一个检查确保没有重复项)。这在一开始运行良好,但存储的数据量越来越大,应用程序无法处理。我得到堆栈溢出,否则数据就无法存储。我想知道的是,如何存储数据,以便在程序运行时有效地访问数据?我研究过sql数据库,但我担心人们在编辑它们时会遇到困难(包括我自己,我只使用过一次sql数据库),或者性能可能会很慢。如果不是这样的话,我希望能举一个小例子来说明如何做到这一点。任何建议都将不胜感激,谢谢

这是用于加载信息的当前代码(我认为不需要它,但如果你想看看我在做什么,你就去吧)


我建议您使用SQL或Access数据库。即使是初学者也很容易操作。其他人编辑它们没有问题,它们的表现超出了你的想象。只需一点代码片段(例如,文本或CSV),就可以非常轻松地导出任何类型的数据。您只需要学习基本的SQL查询和一些简单的C代码即可使用它们。在许多教授C#和C#的普通书籍中,你可能会找到一个初学者数据库程序。我自己通过Deitel和Deitel Visual Basic 6学习了数据库编程:如何编程。别那么做,那是很久以前的事了。有关C#或任何您可以检查的语言的基本示例。欢迎来到强大的数据库编程和SQL世界。

使用数据库。创建一个管理软件,允许用户舒适地调整数据。与数据库一致。另一个选项可能是XML(可能加载多个文件)@meilke表示SQL、Access或任何常规类型?@user2795977请原谅非特定的答案:这取决于很多事情。。。
       using (r)
    {
        int counterSuccess = 0;
        int counterFailed = 0;

        while ((origString = r.ReadLine()) != null)
        {
            if (origString.Length >= 8)
            {
                if (origString.StartsWith("0x", StringComparison.CurrentCultureIgnoreCase))
                {
                    origString = origString.Substring(2);
                }
                parseSuccess = uint.TryParse(origString.Substring(0, 8), System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.CurrentCulture, out addr);
                addrIdentifier = origString.Remove(0, 8);
                addrIdentifier = addrIdentifier.Trim();
                    if (!parseSuccess)
                    {
                        counterFailed++;
                    }
                    else if (parseSuccess)
                    {
                        Addresses.Add(addrIdentifier, addr);
                        counterSuccess++;
                    }
                }
            }
        r.Close();