Unity3D 使用SQLite


  使用Unity操作SQLite,需要用到三個庫文件,分別是Mono.Data.Sqlite.dll和System.Data.dll和Sqlite3.dll,前兩個庫文件可以在unity中找到,具體步驟:先找到unity安裝位置,具體路徑如下

(許多人都推薦去2.0目錄中找,我用的是4.5,因為2.0會報錯),Sqlite3.dll可以去官網下載

 

 

配置好環境就可以對數據庫進行操作了

這是一些常用操作

using UnityEngine;
using Mono.Data.Sqlite;
using System;

///<summary>
///數據庫輔助類
///</summary>
public class SQLiteHelp
{
    private SqliteConnection dbConnection;
    private SqliteCommand dbCommand;
    private SqliteDataReader dbReader;

    public SQLiteHelp(string conStr)
    {
        OpenSQLite(conStr);
    }

    //打開數據庫
    public void OpenSQLite(string conStr)
    {
        try
        {      
            dbConnection = new SqliteConnection(conStr);
            dbConnection.Open();
            Debug.Log("Connect successful!");
        }
        catch (Exception ex)
        {
            Debug.Log(ex.Message);
        }
    }

    //創建表
    public SqliteDataReader CreateTable(string tabName, string[] col, string[] colType)
    {
        if (col.Length != colType.Length)
        {
            throw new SqliteException("columns.Length != colType.Length");
        }

        string query = "CREATE TABLE " + tabName + " (" + col[0] + " " + colType[0];

        for (int i = 1; i < col.Length; ++i)
        {
            query += ", " + col[i] + " " + colType[i];
        }

        query += ")";

        return ExecuteQuery(query);
    }

    //連接數據庫
    public void CloseSqlConnection()

    {
        if (dbCommand != null)
        {
            dbCommand.Dispose();
        }
        dbCommand = null;

        if (dbReader != null)
        {
            dbReader.Dispose();
        }
        dbReader = null;

        if (dbConnection != null)
        {
            dbConnection.Close();
        }
        dbConnection = null;

        Debug.Log("Disconnected from db.");
    }

    //執行sqlQuery操作 
    public SqliteDataReader ExecuteQuery(string sqlQuery)
    {
        dbCommand = dbConnection.CreateCommand();
        dbCommand.CommandText = sqlQuery;
        dbReader = dbCommand.ExecuteReader();

        return dbReader;
    }

    //插入數據
    public SqliteDataReader InsertInto(string tableName, string[] values)
    {
        string query = "INSERT INTO " + tableName + " VALUES (" + values[0];

        for (int i = 1; i < values.Length; ++i)
        {
            query += ", " + values[i];
        }

        query += ")";

        return ExecuteQuery(query);
    }

    //查找表中所有數據
    public SqliteDataReader ReadFullTable(string tableName)
    {
        string query = "SELECT * FROM " + tableName;

        return ExecuteQuery(query);
    }

    //查找表中指定數據
    public SqliteDataReader ReadSpecificData(string tableName, string selectkey, string selectvalue)
    {
        string query = "SELECT * FROM " + tableName + " where " + selectkey + " = " + selectvalue + " ";

        return ExecuteQuery(query);
    }


    //更新數據  SQL語法:UPDATE table_name SET column1 = value1, column2 = value2....columnN = valueN[WHERE  CONDITION];
    public SqliteDataReader UpdateInto(string tableName, string[] cols, string[] colsvalues, string selectkey, string selectvalue)
    {
        string query = "UPDATE " + tableName + " SET " + cols[0] + " = " + colsvalues[0];

        for (int i = 1; i < colsvalues.Length; ++i)
        {
            query += ", " + cols[i] + " =" + colsvalues[i];
        }

        query += " WHERE " + selectkey + " = " + selectvalue + " ";

        return ExecuteQuery(query);
    }

    //刪除表中的內容  DELETE FROM table_name  WHERE  {CONDITION or CONDITION}(刪除所有符合條件的內容)
    public SqliteDataReader Delete(string tableName, string[] cols, string[] colsvalues)
    {
        string query = "DELETE FROM " + tableName + " WHERE " + cols[0] + " = " + colsvalues[0];

        for (int i = 1; i < colsvalues.Length; ++i)
        {
            query += " or " + cols[i] + " = " + colsvalues[i];
        }
        
        return ExecuteQuery(query);
    }

    //插入指定的數據
    public SqliteDataReader InsertIntoSpecific(string tableName, string[] cols, string[] values)
    {
        if (cols.Length != values.Length)
        {
            throw new SqliteException("columns.Length != values.Length");
        }

        string query = "INSERT INTO " + tableName + "(" + cols[0];

        for (int i = 1; i < cols.Length; ++i)
        {
            query += ", " + cols[i];
        }

        query += ") VALUES (" + values[0];

        for (int i = 1; i < values.Length; ++i)
        {
            query += ", " + values[i];
        }

        query += ")";

        return ExecuteQuery(query);
    }

    //判斷在指定列名中是否存在輸入的值
    public bool ExitItem(string tableName,string itemName,string itemValue)
    {
        bool flag = false;

        dbReader = ReadFullTable(tableName);

        while (dbReader.Read())
        {
            for(int i=0; i<dbReader.FieldCount; i++)
            {
                if(dbReader.GetName(i) == itemName)
                {
                    if(dbReader.GetValue(i).ToString() == itemValue)
                    {
                        flag = true;
                        break;
                    }
                }
            }
        }

        return flag;
    }
}
View Code

 

 如果不清楚SQLite基本操作,可以訪問:https://www.yiibai.com/sqlite/date-and-time.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM