UNITY-关于读取数据库的代码使用

在Unity中使用SQLite数据库需要引入Mono.Data.Sqlite、System.Data和Sqlite3的DLL文件。将这三个库放入Assets/Plugins目录,注意Unity2018可能对System.Data产生冲突,此时需要移除System.Data。推荐使用SQList轻量级数据库管理工具。数据库操作涉及SqliteCommand、SqliteConnection和SqliteDataReader三个关键类,包括连接、指令和数据读取。代码示例包含常见数据库操作,注释详细,适用于学习者。别忘了在操作完毕后释放资源。

Unity 使用数据库要先导入三个dll (Mono.Data.Sqlite \ System.Date \ Sqlite3)

首先找到Unity源路径找到前两个dll (这个dll只能使用自己的)

 

三个dll都需要放到Assets/Pligins(该文件夹需要自己创建) Unity2018放进去会报错,把System.Date删掉就好了

此次使用的SQL软件是SQList一款轻量级数据库软件

 

数据库主要学三个类 : SqliteCommand(数据库连接对象) \ SqliteCommand (数据库指令对象) \ SqliteDataReader(数据读取对象)

 

 

 

数据库的使用,读取和使用的方法都写在代码中了,注释写得很清楚,都是一些常用操作,希望可以帮到和我一样处于学习阶段的你们

using UnityEngine;
using Mono.Data.Sqlite;

public class SQLDemo : MonoBehaviour
{
    //数据库连接对象 
    private SqliteConnection con;
    //数据库指令对象
    private SqliteCommand command;

    private string connectionStr;
    //数据库读取对象
    private SqliteDataReader reader;

    private void Start()
    {
        //数据源路径
        connectionStr = "Data Source = " + Application.streamingAssetsPath + "/HeroDatabase.sqlite";
        //Debug.Log(connectionStr);

        //实例化连接对象
        con = new SqliteConnection(connectionStr);

        //打开连接
        con.Open();

        //建立指令对象,不要使用new,这样是使用当前连接的数据库
        command = con.CreateCommand();

        //设置SQL语句
        command.CommandText = "Insert Into HeroTable VALUES('皮城女警1',1,120,20)";
        //执行,有三个方法
        //第一种,返回int,该方法执行不了查询语句,返回受影响的行数【通常适用于增删改】
        int rows = command.ExecuteNonQuery();

        /*第二种,执行SQL语句
        *设置SQL语句
        *command.CommandText = "Update HeroTable Set HeroLevel=2 WHERE HreoName='皮城女警'"
        *command.CommandText = "Select HeroAD FromTable Where HeroName='皮城女警'";
        *
        *执行SQL语句,返回查询到的第一个结果(第一行第一列)
        *object selectResult = command.ExecuteScalar();
        */

        /*设置SQL语句
        *command.CommandText = "Select * From HeroTable";
        *执行SQL语句,并返回所有查询到的结果到读取器
        *reader = command.ExecuteReader();
        *如果读取数据?
        *读取下一行数据,如果没有下一行返回false,否在返回true
        *reader.Read();  读第一行
        *reader.Read();  读第二行
        *reader.Read();  读第三行
        *读全部
        *while(reader.Read())
        *{
        *   reader.FieldCount//列数
        *   for(int i = 0, i < Reader.FielCount; i++)
        *   {
        *       object val = reader.GetValue(i)//获取一行数据中的第i个,读取的类型都是object
        *   }
        *}
        *reader.Close();//关闭读取器,如果不关闭,不能读取下一个
        */
    }

    /// <summary>
    /// 当应用程序关闭时候调用一次
    /// </summary>
    private void OnApplicationQuit()
    {
        //释放对象
        command.Dispose();
        //关闭连接
        con.Close();
    }

    //#if #endif 可以用于判断在那个平台运行,平台名可以看下面的图
    //因为不同系统流文件路径不一样
#if UNITY_ANDROID
    //在安卓平台运行
#endif
}

务必记得释放资源 reader.close(),command.Dispose(),con.Close().

其中connectionStr表示的流路经里面并没有StreamingAssets文件夹,需要自己在Assets文件夹内创建,并把数据库文件放进去

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值