0

我在 MSDN 论坛上发现了由 Kevin Gadd 开始的 Xbox 360 的 SQLite 实现,但他们是他使用的谷歌 C#-SQLite 实现 DLL。我只是想知道 API 是如何工作的,因为他们在此处将其移植到 c# 的原始网站:http ://code.google.com/p/csharp-sqlite/没有列出他们如何更改 API,但它确实说大多数基本命令或至少来自我得到的一些评论/描述。

上面的 DLL 确实可以在 Xbox 360 XNA 上运行,因为我试过了。我的主要目标是更容易看到我的目标是:

  1. 在 Xbox 360 上创建一个简单的数据库,其中包含 2-3 个表作为测试(可能在 Windows 上,然后将数据库放在内容部分,以便它与游戏的其余部分一起部署到 Xbox 360)。
  2. 在测试场景中将数据发送到这些表可能使用插入或更新,但我不知道.NET 中的 MySQL 和 MS-SQL 等 SQLite 命令。
  3. 做垃圾收集

如果你完全可以忽略其他所有事情,只做上面的 3 件事,但如果我能做到 #1 + #2(基本 SQLite 技能),我会找到其他人来帮助我完成 #3,因为使用将是大部分的战斗和然后我可以找人帮我做剩下的事情。

我担心学习如何在 c# 中使用 SQLite,有人可以告诉我在代码中编程时 SQl Server 和 SQLite 之间的区别吗?我应该担心的限制是我唯一的大问题。编辑: jsut 希望做 1 + 2 和休息我不在乎。

4

2 回答 2

0

我不确定 Xbox 360 是否真的支持 SQLite。我认为您甚至不应该在 Windows 以外的任何东西上将 SQL 用于 XNA 游戏项目。他们为此提供了内置的内存管理和 XML 解析器。

至于如何附加到 SQLite 数据库,您需要将您的 SQLite DLL 包含到您的项目引用中。

之后,将以下内容添加到您的 using 语句中。

using System.Data;
using System.Data.SQLite;
using System.IO;

要链接到您的数据库并查询数据/发出 SQL 命令,请使用以下命令。

SQLiteConnection sqlCon = new SQLiteConnection("Data Source=<pathtodbfile>;Version=3;New=True;Compress=False;");

sqlCon.Open();
SQLiteCommand cmd = sqlCon.CreateCommand();

SQLiteDataAdapter db = new SQLiteDataAdapter("<your SQL Query Here>", sqlCon);

DataSet ds = new DataSet();
ds.Reset();

db.Fill(ds);

然后您可以访问它加载的数据。

ds.Tables[0]; <-- 你的数据集可以存储很多表,但是对于一个查询,它会为你加载一个包含查询数据的表到第一个索引中。这就是我做 a 的ds.Reset()原因,因为您可能决定在某处重用数据集。

这将适用于 Windows 中的 C#。如果您正确完成了所有引用和 using 语句,那么这也应该适用于 XNA 项目。

正如我之前所说,我不确定这是否适用于 Xbox 360 机器。

于 2012-06-19T20:24:57.530 回答
0

您的最大问题是您无法写入 Xbox 上的应用程序安装文件夹。您必须使用保存系统。您可以在创建时将您的 sqlite db 文件复制到新的保存中。

我会避免长时间保持连接打开,而只是使用它来序列化/反序列化数据。只需使用普通的 xml 序列化,您可能就不会那么头疼了,请参阅http://msdn.microsoft.com/en-us/library/system.xml.serialization.aspx实际上做您想做的事情更简单.

自定义二进制格式应该更小,但这更复杂。查看内容序列化程序如何用于 xml => xnb 序列化。

于 2012-07-08T19:02:39.830 回答