unity读取Sqlite数据库

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

public enum DataBaseMessage //用来存放数据库的异常信息
{
    Normal = 1,  //正常
    AddDataExist, //添加的数据已经存在
    PrimaryKeyNoExist, //主键不存在
}
//用来对数据库的操作
public class DataBaseManager  //对数据库的操作,封装成单例模式
{
    public  static  DataBaseManager GetInstanic
    {
        get
        {
            if (Instatinc == null)
                Instatinc = new DataBaseManager();
            return Instatinc;
        }
    }
    private  DataBaseManager() //构造函数
    {
        SQLConn = new SqliteConnection(SQL_Path); //创建数据连接
        SQLComm = SQLConn.CreateCommand(); //创建对应的数据库指令
    }

    public void Open_DB() //打开数据库
    {
        if (SQLConn.State == ConnectionState.Closed) //判断当前数据库连接的状态是否在关闭状态
        {
            SQLConn.Open(); //如果当前的数据库连接状态为关闭状态,就开启当前状态
        }
    }

     public void Close_DB() //关闭数据库
    {
            SQLConn.Close(); //关闭数据库的时候,不需要判断当前的数据库状态,直接关闭即可

    }

   public  DataBaseMessage Add_Data(string  Table, string ColumnName, string  data) //往数据库里面添加数据
    {
        string comm = "Insert Into " + Table + "( "+ ColumnName +" ) Values ( '" + data +"')";
        SQLComm.CommandText = comm; //执行的数据库指令
        try
        {
            SQLComm.ExecuteNonQuery(); //执行SQL指令
        }
       catch(System.Exception e) //用来抛出异常信息
        {
            string str = "column " + ColumnName +" is not unique"; //数据库异常信息: 该列的值不能重复,但是尝试插入重复的值
            if (str == ExceptionMessage(e.Message, "\n"))
           {
               return DataBaseMessage.AddDataExist;  //如果已经存在了,就返回存在的信息
           }
        }
        return DataBaseMessage.Normal;
    }

   public DataBaseMessage Add_Data(string Table, string ColumnName, string PrimaryKey, string  PrimaryKeyValue,  string data) 
   {
       //添加到不是主键的里面
       //Update  PlayCount set  Pass = 25 Where User = '1'
       string comm = "Update "+ Table +" set  " +ColumnName+" = '" + data +"'  Where " + PrimaryKey+ "= '"+ PrimaryKeyValue +"'";
       SQLComm.CommandText = comm; //执行的数据库指令
       if(SQLComm.ExecuteNonQuery() == 0) //执行SQL指令
       {
           return DataBaseMessage.PrimaryKeyNoExist; //如果执行指令的影响行数是零,说明没有此行,既没有对应的PrimaryKeyValue
       }
       return DataBaseMessage.Normal;
   }

    public bool  Select_Data(string Table, string ColumnName, string PrimaryKey, string  PrimaryKeyValue, string data) 
   {
        //判断某一特定的行,对应的某一列上面的值是否存在
       string comm = "Select " +ColumnName +" From " + Table +" Where " + PrimaryKey +" = '" + PrimaryKeyValue +"'"; //只有一行
       SQLComm.Cancel(); //先取消命令,在不取消命令的情况下,不能重新设置命令
       SQLComm.CommandText = comm;
       Read = SQLComm.ExecuteReader(); //执行命令
        if(Read.GetValue(0).ToString() == data) //判断是否相等,如果相等就返回真
        {
            Read.Close();
            return true;
        }
        Read.Close();
       return false;  //不存在

   }

   public bool Select_Data(string Table, string ColumnName, string data) //判断某一行是否存在该数据
   {
       string comm = "Select " + ColumnName +" From " + Table; //查询某一列的值
       SQLComm.Cancel();
       SQLComm.CommandText = comm;
       Read = SQLComm.ExecuteReader();
       while (Read.Read())
       {
           if (Read.GetValue(0).ToString() == data)
           {
               Read.Close();
               return true; //如果存在就返回真
           }
       }
       Read.Close();
       return false;
   }

   public string Get_Data(string Table, string ColumnName, string PrimaryKey, string PrimaryKeyValue)
   {  //取出数据库里面某一个表,某一列,某一行的值
       string comm = "Select " + ColumnName + " From " + Table + " Where " + PrimaryKey + " = '" + PrimaryKeyValue + "'"; //只有一行
       SQLComm.Cancel(); //先取消命令,在不取消命令的情况下,不能重新设置命令
       SQLComm.CommandText = comm;
       Read = SQLComm.ExecuteReader(); //执行命令
       string data =  Read.GetValue(0).ToString();
        Read.Close();
        return data;
   }

    private string ExceptionMessage(string ExcMessage, params string[] s) //分割异常信息
   {
       string[] str = ExcMessage.Split(s, System.StringSplitOptions.RemoveEmptyEntries);
       return str[str.Length - 1].ToString();
   }
    private static DataBaseManager Instatinc;
    private SqliteConnection SQLConn;  //创建数据库连接对象
    private SqliteCommand SQLComm;  //创建数据库指令对象
    private SqliteDataReader Read;  //创建数据库连接读取对象
    private string SQL_Path = "Data Source = " +Application.dataPath + "/_MyProject/Plugins/Demo_Defense_DB"; //数据库路径



}

 

posted @ 2015-11-23 19:07  狂奔的老鳖  阅读(1258)  评论(0编辑  收藏  举报