You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
3.8 KiB
100 lines
3.8 KiB
using Godot; |
|
using LiteDB; |
|
using System; |
|
using System.IO; |
|
|
|
namespace EGFramework.Examples.Test{ |
|
public partial class EGSaveTest : Node,IEGFramework |
|
{ |
|
public override void _Ready() |
|
{ |
|
base._Ready(); |
|
GD.Print(ProjectSettings.GlobalizePath("res://SaveData/Default.json")); |
|
GD.Print(ProjectSettings.GlobalizePath("user://SaveData/Default.json")); |
|
GD.Print(Path.GetDirectoryName(ProjectSettings.GlobalizePath("res://SaveData/Default.json"))); |
|
// TestLiteDB(); |
|
} |
|
|
|
public void TestSqlite(){ |
|
// string result = this.EGSqlite().CreateTable<SqliteBackpackItem>(); |
|
this.EGSqlite().SaveData(new SqliteBackpackItem{ |
|
ItemID = 10, |
|
ItemCount = 1, |
|
BackpackID = 1, |
|
}); |
|
GD.Print(this.EGSqlite().ExceptionMsg); |
|
// var properties = typeof(SqliteBackpackItem).GetFields(); |
|
// Godot.GD.Print(properties.Count() + " Readed "); |
|
} |
|
|
|
public void TestLiteDB(){ |
|
// 打开数据库 (如果不存在自动创建) |
|
using(var db = new LiteDatabase("SaveData/MyData.db")) |
|
{ |
|
// 获取一个集合 (如果不存在创建) |
|
var col = db.GetCollection<Customer>("customers"); |
|
|
|
// // 创建新顾客实例 |
|
// var customer = new Customer |
|
// { |
|
// Id = 200, |
|
// Name = "Alexander King", |
|
// Phones = new string[] { "8000-0000", "9000-0000" }, |
|
// IsActive = true |
|
// }; |
|
// // 插入新顾客文档 (Id 自增) |
|
// for (int i = 0; i < 10000; i++) |
|
// { |
|
// customer.Id ++; |
|
// col.Insert(customer); |
|
// } |
|
// // 更新集合中的一个文档 |
|
// customer.Name = "Joana Doe"; |
|
// col.Update(customer); |
|
// // 使用文档的 Name 属性为文档建立索引 |
|
// col.EnsureIndex(x => x.Name); |
|
// 使用 LINQ 查询文档 |
|
// var results = col.Find(x => x.Name.StartsWith("Al")); |
|
// GD.Print("Find:"+results.Count()); |
|
// string ids = ""; |
|
// foreach(var item in results){ |
|
// ids += "["+item.Id.ToString()+"]"; |
|
|
|
// } |
|
// GD.Print(ids); |
|
// // 让我们创建在电话号码字段上创建一个索引 (使用表达式). 它是一个多键值索引 |
|
// //col.EnsureIndex(x => x.Phones, "$.Phones[*]"); |
|
// col.EnsureIndex(x => x.Phones); |
|
// // 现在我们可以查询电话号码 |
|
// var r = col.FindOne(x => x.Phones.Contains("8888-5555"));\ |
|
|
|
// Test Other |
|
// ILiteCollection<SqliteBackpackItem> col = db.GetCollection<SqliteBackpackItem>("SqliteBackpackItem"); |
|
// var item = new SqliteBackpackItem{ |
|
// ItemID = 10, |
|
// ItemCount = 1, |
|
// BackpackID = 1, |
|
// }; |
|
// for (int i = 0; i < 100; i++) |
|
// { |
|
// col.Insert(item); |
|
// } |
|
} |
|
} |
|
|
|
} |
|
public struct SqliteBackpackItem{ |
|
public int Id { get; set; } |
|
public int ItemID { get; set; } |
|
public int ItemCount { get; set; } |
|
public int BackpackID { get; set; } |
|
} |
|
|
|
public class Customer |
|
{ |
|
public int Id { get; set; } |
|
public string Name { get; set; } |
|
public string[] Phones { get; set; } |
|
public bool IsActive { get; set; } |
|
} |
|
} |