【问题标题】:what database does windows applications work with that runs with the start of the app?Windows 应用程序使用什么数据库,在应用程序启动时运行?
【发布时间】:2020-11-21 15:13:01
【问题描述】:

所以这是交易,这是我第一次为客户端开发 Windows 应用程序,显然无法每次运行 xampp 来运行 MySQL 数据库以使用该应用程序(因为该应用程序需要从数据库中获取数据) ,所以我的问题是如何制作一个普通的 Windows 应用程序,其数据库在启动应用程序本身后启动?大多数人是怎么做到的?他们使用什么数据库?最好是免费的解决方案

【问题讨论】:

  • 您使用嵌入式数据库,例如 SQL Server Compact Editionsqlite 或类似的,您正在寻找的功能是占用空间小且可再分发的客户端库 + 无需安装服务器。

标签: mysql .net database windows xampp


【解决方案1】:

有很多不同的选择。一位评论者提到了 SQLite 和 SQL Server Compact 版本,但如果您在本地运行数据库,您应该考虑是否需要如此复杂的东西,或者它是否只是矫枉过正。

您可能需要考虑LINQLINQ to XML。 LINQ 是内置于 C# .NET 中的查询 API,在 .NET 的较新版本(例如 Core 3.1)中具有令人难以置信的性能,并且与整个 C# 生态系统非常干净地集成。

使用裸 LINQ,您可以在启动时从任何类型的文件格式加载数据(XML 或 JSON 很流行,我最近开始使用由 Google 开发的标准 FlatBuffers),其中您有一个 List<YourObjectModel> 包含所有您的数据库条目。 YourObjectModel 这里是一个代表数据库行的类。从那里,您可以通过以下两种方式之一来构建查询。有SQL风格

List<YourObjectModel> dataBase = LoadData();
var result = from entry in database
             where entry.FieldA == "something"
             select entry;

或者,我更喜欢流畅的风格

var result = database.Where(entry => entry.FieldA == "something");

在实践中,你可以用 LINQ 做任何你可以用 SQL 做的事情,包括排序、旋转、分组等。LINQ 有很多好处,但我最喜欢的卖点是“惰性求值”,而 LINQ 没有如果可以避免的话,不要一次执行整个查询。如果您不排序,将IEnumerable&lt;T&gt; 转换为不同的容器,或读取结果的Count 属性,LINQ 将运行查询的时间足够长以获得一个结果,然后准备好它。如果您将结果传递到 foreach 循环或其他一些场景,这可能会导致性能大幅提升。

一些轶事证据,我正在开发一个简单的 2D 游戏引擎,我需要按实体的 Z 坐标对实体进行排序,以便从后到前绘制它们。我很懒,使用 LINQ 查询对包含 10,000 多个对象的List&lt;GameEntity&gt; 进行排序,因为它是一种单行解决方案。它运行得很好。我回去实现了一个适当的排序,发现它实际上比 LINQ 慢。我花了一个下午试图实现一个比 LINQ 更快的排序算法,但没有成功。

【讨论】:

    猜你喜欢
    • 2011-08-22
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多