码迷,mamicode.com
首页 > 数据库 > 详细

UniDDataBase-介绍及主要用法总结

时间:2015-01-19 00:20:48      阅读:835      评论:0      收藏:0      [点我收藏+]

标签:uniddatabase

UniDDatabase可以处理的数据类型:INT,TEXT,FLOAT,DATE,TIME,Prefab,Texture2D,Audio,Position,Rotation,ScriptFile等。文件夹结构:UniDDataBase的文件夹结构帮助开发者管理文件。所有你想让UniDDatabase帮你管理的内容你都需要放到正确地文件夹中。音频剪辑放在audio_uni 文件夹。UniDDatabase文件自动放在DDatabase_uni文件夹。Prefabs在prefab_uni文件夹。图片放在Texture_2D_uni文件夹。支持unity3d引擎的独立版和专业版的用户.100%的兼容unity引擎,使用一行代码访问一行中的任何数据.他访问数据的速度是1000行的查询只需要0.193ms.

UnidDDataBase是用来完成本地数据存储读取的数据库Unity插件,它通过txt文件保存数据,或者更确切的说是将数据表以自己独特的字符串格式保存到txt文件中。作为数据库最基本的操作:增、删、改、查。已经知道,这个插件使我们可以手动创建数据表,填写数据,更改数据,增加记录,删除记录。那么下面介绍如何用代码动态的对数据表操作。

其实这些方法UniDDataBase已经帮我们封装好了我们只需要调用,这些方法在UniDDataBaseCs.cs文件中都是类方法。

调用方法时首先在脚本中要声明public TextAsset 字段名,一定将要操作的txt文件拖入,不能通过Resources.Load()加载。

1.增加记录:

public static void AddNewRecord(TextAsset ddatabase)

Description:它会为数据表中添加一行记录,并赋上默认值。

2.删除记录:

public static void DeleteRecord(TextAsset ddatabase,int recordNumber)

Description:删除第recordNumber行记录。

注意:若全部删除数据表中的数据时需要从后往前删,反之,就会发现某些行未被删除,因为数据表每删掉一行要将剩余的行往前移动一次。

3.更新数据:

提供了更新数据表一个单元格数据的函数了,但没看到能提供一下子可以更新数据表一行记录的函数。当然这已经足够了。

public static bool UpdateCell(TextAsset ddatabase,string tKeyCellData,int userInputInt)

Description:这是一个更新一个int型单元格的方法,当然对应的其他类型的还有很多。

遇到错误:Programmer Error!!!This cell Does not support INT, itsupports: NULL;

说明你更新的单元格根本不存在,看行号和列号是否过界。

4.查询数据:

只提供了查询某个单元格数据的函数。对于每个类型都有单独对应的函数,下面是int型的方法:

public static int GetIntWhereColumnRowEquals(TextAsset ddatabase,int columnNumber,int rowNumber)

Description:获得第rowNumber行第columnNumber列的单元格的值。

public static String[] GetArrayOfDdKeyInColumn(TextAsset ddatabase,string columnName)

Description:获得名字为columnName的列所有值。

5.其他函数介绍:

public static string GetColumnName(TextAsset ddatabase,int rowNumber)

Description:通过列号获得列名。rowNumber应为colmunNumber.在其他类中也有行号和列号参数不对应的情况,到时候自己试一试。

public static String[] GetArrayOfDdKeyInColumn(TextAsset ddatabase,string columnName)

Description:获得数据库文件中某列对应的所有DdKey,即txt数据文件中每一行中的键

public static String[] GetArrayOfTextInColumnByPattern(TextAsset ddatabase,string columnName,Enum typeOfOperation,string stringPattern)

Description:通过某种方式获得某列中的一些值,其中typeOfOperation这个枚举一定要像插件中例子中的那个枚举声明的那样,不能改变,因为我看实现代码中用到了枚举值对应的字符串来做判断,所以这个枚举的声明一定得是这样:

    [System.Serializable]
    public enum OperationType
    {
        All,
        Equals,
        Contains,
        Greater,
        GreaterThanOrEqual,
        LessThan,
        LessThanOrEqual,
        Between        
    }

public static int GetTotalColumns(TextAsset ddatabase)

Description:获得数据表总列数

public static int GetTotalRows(TextAsset ddatabase)

Description:获得数据表总行数

我自己也实现了一下这个函数:

using System.text;

using System.IO;

private int GetTotalRows (string txtPathint columnNumber) {//columnNumber 表示数据表有几列字段
        using (StreamReader read = new StreamReader(txtPathEncoding.Default))
        {
            return (read.ReadToEnd().Split(\n).Length-4)/(2*columnNumber) - 1;//kai tou 3 and jiewei 1;
        }
}

Tips:

1>在txt文件中你会发现类似"EnemyContentTEXT0Default.txt[@*_*@]EnemyContentTEXTTable[@-_*@]ColumnNumber=0[@*_-@]RowNumber=2[@_@]INT"的字符串,这是一条记录值类型的键值对,"INT"前面都是UniDDataBase自己在解读该txt文件时的键,"INT"是值,其他行类似。这条格式特殊的字符串是通过PseudoLinqDatabase_unity类中的public static string GetCellDataKeyStatic(string currentDatabaseName,string currentTableName,int rowNumber,int columnNumber)返回的。当然该类是Editor文件夹中类我们无法调用,我提醒的是我们可以重命名为自己的类来调用哦,当然其中涉及到Editor类的东西都要删掉。

2>创建数据表时表名中最好不要夹杂数字,具体原因。。。

UniDDataBase-介绍及主要用法总结

标签:uniddatabase

原文地址:http://blog.csdn.net/wuming22222/article/details/42846883

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!