iBoxDB -Lightweight Embedded Database

iBoxDB.NET is a lightweight and pure .net database, compatible with Unity. it can help developers to save and load complex data with high efficiency.

Why iBoxDB?
iBoxDB includes almost all traditional database’s features, and simplifies it, the footprint is less than 200KB.

32bit, 64bit, ARM, x86, systems are shared the same library,users don’t need to do any modification before compilation.

Embeddable, data can be saved locally, and don’t need the System.Data library.

Replicable, updated data can be replicated from server to clinet or opposite.

Speed, benchmark test shows the CRUD methods as fast as native C++ database. and NO C pointer it might modify application’s main memory directly

Memory saver, iBoxDB loads data when it’s required. developers don’t need to load all data to memory when game’s started, it will save many memories.

NoSQL, ‘insert’ ‘update’ operations don’t need to write SQL.

CS and JS languages are supported

Install
copy iBoxDB.NET2.dll to Assets/Plugins
No dependencies.

Download
http://www.iboxdb.com/
The zip file includes a demo.

3 Likes

Updated v1.6.5 compatible with the new phone features of Unity3D 4.3

Install
copy iBoxDB.net2.dll to Assets/Plugins
No dependencies.

iBoxDB.NET v1.7 Released
What’s new
UpdateIncrement
Selecting Tracer

I am surprised there hasn’t been any traction on this thread. I downloaded this last night to use as an item database for a game I am working on, and it’s incredibly fast and powerful. This is a great solution for those looking to get away from a strict SQL syntax and have a database that “just works”. I haven’t built anything with it just yet, but I am excited about using Linq to grab database objects - it’s going to be a huge help. Great job, Bruce - keep up the good work!

Support for WebPlayer? Home page says support for in-memory DB, so it seems possible…
How to add a new backend - for example remote storage?
The dlls included in the download (eg. Lib/NetDB/iBoxDB.dll), are they built from the provided source?

Thanks. Bookmarked. :wink:

I tried getting this working with 4.5.5 on Unity Basic on a Windows Store Universal 8.1 app using the .NET 2 dll and I get several errors related to methods in System.IO being referenced but not available. Any ideas? I target .NET 2 instead of Subset as well.

Updated, Compatible with Windows Store App 8.1

A multi-threaded benchmark that compares dictionaries, hash tables, iBoxDB and SQLite would go a long way.

Is this compatible with android and ios?

Yes, iBoxDB is written in C# and Java. The C# DLL will run on either. You can also run the Java version on Android, but I’m not exactly sure how you would integrate that into Unity.

Thanks!
Are there tools to quickly inspect dbs or do I have to write my own?

haven’t gotten that far, but I thought I saw the binary format described in the docs somewhere

WebGL(Preview) iBoxDB on Chrome
5.0p1 publishing settings → enable exceptions : FULL ->Build.
http://www.iboxdb.com/
2026085--131149--js.png

2 Likes

This is, maybe, the ‘problem’ : no Unity examples. :frowning:

Unity example is UnityDBCS

1 Like

sorry, but i got problems work with ios il2cpp on unity version 5.0.0f4.
while running the example, i got following error logs, wish you will help me, thanks:

Initialize engine version: 5.0.0f4 (5b98b70ebeb9)

ArgumentException: An element with the same key already exists in the dictionary.

at Boo.Lang.Runtime.DynamicDispatching.Dispatcher.EndInvoke (IAsyncResult result) [0x00000] in :0

at Boo.Lang.Runtime.DynamicDispatching.Dispatcher.EndInvoke (IAsyncResult result) [0x00000] in :0

at Boo.Lang.Runtime.DynamicDispatching.Dispatcher.EndInvoke (IAsyncResult result) [0x00000] in :0

at Boo.Lang.Runtime.DynamicDispatching.Dispatcher.EndInvoke (IAsyncResult result) [0x00000] in :0

at Boo.Lang.Runtime.DynamicDispatching.Dispatcher.EndInvoke (IAsyncResult result) [0x00000] in :0

at iBoxDB.ByteCodes.Class51…ctor () [0x00000] in :0

at iBoxDB.ByteCodes.Class4.method_2 (Interface2 interface2_0) [0x00000] in :0

at Boo.Lang.Runtime.DynamicDispatching.Dispatcher.EndInvoke (IAsyncResult result) [0x00000] in :0

at Boo.Lang.Runtime.DynamicDispatching.Dispatcher.EndInvoke (IAsyncResult result) [0x00000] in :0

at Boo.Lang.Runtime.DynamicDispatching.Dispatcher.EndInvoke (IAsyncResult result) [0x00000] in :0

at Boo.Lang.Runtime.DynamicDispatching.Dispatcher.EndInvoke (IAsyncResult result) [0x00000] in :0

at iBoxDB.ByteCodes.Class134.method_0 () [0x00000] in :0

at iBoxDB.ByteCodes.Class134.method_1 () [0x00000] in :0

at iBoxDB.ByteCodes.Class140…ctor (iBoxDB.ByteCodes.Class134 class134_1) [0x00000] in :0

at iBoxDB.ByteCodes.Class134.GetEnumerator () [0x00000] in :0

at SqoDemoRunner.Update () [0x00000] in :0

at Boo.Lang.Runtime.DynamicDispatching.Dispatcher.EndInvoke (IAsyncResult result) [0x00000] in :0

at Boo.Lang.Runtime.DynamicDispatching.Dispatcher.EndInvoke (IAsyncResult result) [0x00000] in :0

at SqoDemoRunner.Update () [0x00000] in :0

at Boo.Lang.Runtime.DynamicDispatching.Dispatcher.EndInvoke (IAsyncResult result) [0x00000] in :0

at SqoDemoRunner.Update () [0x00000] in :0

at iBoxDB.LocalServer.IBox.SelectCount (System.String QL, System.Object[ ] arguments) [0x00000] in :0

at iBoxDB.LocalServer.AutoBox.SelectCount (System.String QL, System.Object[ ] arguments) [0x00000] in :0

at UnityDBCS.Start () [0x00000] in :0

at System.Linq.jvm.Runner.<.cctor>b__0 (System.Reflection.MethodInfo m) [0x00000] in :0

System.Linq.jvm.Runner:<.cctor>b__0(MethodInfo)

(Filename: currently not available on il2cpp Line: -1)

use 5.0P2+ http://unity3d.com/unity/qa/patch-releases

Great project!
Thanks

Hi Bruce,

I have a few questions:

  • In your example UnityDBCS, I don’t see any db.Close() or release, can you queue up multiple queries for performance boosts? What’s the most efficient way to do, say 1000 queries?
  • In this line db.Select(“from Players where Score >= ? order by Score desc”, 0), why the ‘?’, in mySQL I can do “from Players where Score >= 0 order by Score desc” (I think)
  • Is the file format compatible with SQLite? I’d like to use Azure Sqlite Store synch.