using UnityEngine;
using System.Collections;
using Mono.Data.Sqlite;
using System.Data; public enum DataBaseMessage //用来存放数据库的异常信息
{
Normal = , //正常
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() == ) //执行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().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().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().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 - ].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"; //数据库路径 }

unity读取Sqlite数据库的更多相关文章

  1. 使用安卓读取sqlite数据库方法记录

    最近要实现android读取sqlite数据库文件,在这里先做一个英汉字典的例子.主要是输入英语到数据库中查询相应的汉语意思,将其答案输出.数据库采用sqlite3. 如图: 实现过程完全是按照参考文 ...

  2. php读取sqlite数据库入门实例

    php读取sqlite数据库的例子,php编程中操作sqlite入门实例.原文参考:http://www.jbxue.com/article/php/22383.html在使用SQLite前,要确保p ...

  3. [CSharpTips]C#读取SQLite数据库中文乱码

    C#读取SQLite数据库中文乱码 C#在读取C++写入数据的Sqlite数据库中的Text内容时,会出现乱码,因为C++默认编码格式为GB2312,而Sqlite编码格式为UTF-8,存入时不统一就 ...

  4. android直接读取项目中的sqlite数据库

    最近项目中要实现android读取sqlite数据库文件,在这里先做一个英汉字典的例子.主要是输入英语到数据库中查询相应的汉语意思,将其答案输出.数据库采用sqlite3. 如图: 实现过程完全是按照 ...

  5. 14 SQLite数据库

    SQLite数据库SQLite 是一款轻型的数据库SQLite 的设计目标是嵌入式的SQLite 占用资源低SQL 指结构化查询语言SQL 使我们有能力访问数据库SQL 是一种 ANSI 的标准计算机 ...

  6. Android使用SQLite数据库(4)

    读取SQLite数据库中的字符串字段,使用Cursor的getString方法(其他类型的字段也有相应的读取方法): public abstract String getString (int col ...

  7. Unity&Sqlite数据库

    Sqlite是一个跨平台关系型小型数据库,非常便利,适合于嵌入式设备:对于Sqlite数据库来说,这个数据库是以文件的形成存在的(比如data.db):数据库是由表组成的,在一个数据库里面可以存储多个 ...

  8. SQLite数据库如何存储和读取二进制数据

    SQLite数据库如何存储和读取二进制数据 1. 存储二进制数据 SQLite提供的绑定二进制参数接口函数为: int sqlite3_bind_blob(sqlite3_stmt*, int, co ...

  9. 在IOS中使用DES算法对Sqlite数据库进行内容加密存储并读取解密

    在IOS中使用DES算法对Sqlite 数据库进行内容加密存储并读取解密 涉及知识点: 1.DES加密算法: 2.OC对Sqlite数据库的读写: 3.IOS APP文件存储的两种方式及读取方式. 以 ...

随机推荐

  1. jquery如何获得页面元素的坐标值

    http://www.cnblogs.com/pansly/archive/2011/05/25/2056222.html jquery如何获得页面元素的坐标值   yulutxt是输入经典语录的输入 ...

  2. Gartner公布了集成系统的魔力象限 - Nutanix的关键技术是什么?

    读报告,分析报告,写报告.这活儿我不专业.专业的是西瓜哥的这个:http://www.dostor.com/article/2014-06-25/9776476.shtml 再列出个几篇文章供參考: ...

  3. Leetcode:best_time_to_buy_and_sell_stock_II题解

    一.题目 如果你有一个数组,它的第i个元素是一个股票在一天的价格. 设计一个算法,找出最大的利润. 二.分析 假设当前值高于买入值,那么就卖出,同一时候买入今天的股票,并获利.假设当前值低于买入值,那 ...

  4. 模块化利器:RequireJS常用知识

    1. 模块化 目前常见的模块化开发方式,全局空间方式是最基本的一种,另外常见的还有遵循AMD规范的开发方式,遵循CMD规范的开发方式,和ECMAScript 6的开发方式.需要说明的是,CMD和ES6 ...

  5. UVA 10954 Add All

    题意: 给出n个数,要将n个数相加,每次相加所得的值为当次的计算量,完成所有的求和运算后,要求总的计算量最小. 分析: 直接一个优先队列,由小到大排序,每次前两个相加就好. 代码: #include ...

  6. Win手机安卓程序初体验

    老大说快看博客园,Windows手机可以装安卓程序了. 啊,真的么?可以在我的撸妹1520上愉快的玩COC了么?我还可以愉快的看小说,不对,是听小说,哈哈,安卓君的三千万程序兵,等着老夫来一一临幸你们 ...

  7. 5.7 cm server-agent 会出现无法启动

    异常信息如下: 离线安装cloudera-scm-agent5.7的Unable to create the pidfile问题 在离线安装Cloudera Manager启动agent出现了如下异常 ...

  8. 快速学习javascript对象-遍历对象

    为了方便了解每个javascript对象包含的方法,我写一个函数. function GetCollection(obj){ try{ if(obj){ var sType=""; ...

  9. jquerymobile listview 局部刷新

    function onSuccess(data, status) { data = $.trim(data); // alert(data); // return; if (data) { $('#l ...

  10. skynet newservice API参考

    local skynet = require("skynet") skynet.start(start_func) c服务snlua启动后执行的第一个lua文件里面的主逻辑必定是s ...