unity读取Sqlite数据库
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数据库的更多相关文章
- 使用安卓读取sqlite数据库方法记录
最近要实现android读取sqlite数据库文件,在这里先做一个英汉字典的例子.主要是输入英语到数据库中查询相应的汉语意思,将其答案输出.数据库采用sqlite3. 如图: 实现过程完全是按照参考文 ...
- php读取sqlite数据库入门实例
php读取sqlite数据库的例子,php编程中操作sqlite入门实例.原文参考:http://www.jbxue.com/article/php/22383.html在使用SQLite前,要确保p ...
- [CSharpTips]C#读取SQLite数据库中文乱码
C#读取SQLite数据库中文乱码 C#在读取C++写入数据的Sqlite数据库中的Text内容时,会出现乱码,因为C++默认编码格式为GB2312,而Sqlite编码格式为UTF-8,存入时不统一就 ...
- android直接读取项目中的sqlite数据库
最近项目中要实现android读取sqlite数据库文件,在这里先做一个英汉字典的例子.主要是输入英语到数据库中查询相应的汉语意思,将其答案输出.数据库采用sqlite3. 如图: 实现过程完全是按照 ...
- 14 SQLite数据库
SQLite数据库SQLite 是一款轻型的数据库SQLite 的设计目标是嵌入式的SQLite 占用资源低SQL 指结构化查询语言SQL 使我们有能力访问数据库SQL 是一种 ANSI 的标准计算机 ...
- Android使用SQLite数据库(4)
读取SQLite数据库中的字符串字段,使用Cursor的getString方法(其他类型的字段也有相应的读取方法): public abstract String getString (int col ...
- Unity&Sqlite数据库
Sqlite是一个跨平台关系型小型数据库,非常便利,适合于嵌入式设备:对于Sqlite数据库来说,这个数据库是以文件的形成存在的(比如data.db):数据库是由表组成的,在一个数据库里面可以存储多个 ...
- SQLite数据库如何存储和读取二进制数据
SQLite数据库如何存储和读取二进制数据 1. 存储二进制数据 SQLite提供的绑定二进制参数接口函数为: int sqlite3_bind_blob(sqlite3_stmt*, int, co ...
- 在IOS中使用DES算法对Sqlite数据库进行内容加密存储并读取解密
在IOS中使用DES算法对Sqlite 数据库进行内容加密存储并读取解密 涉及知识点: 1.DES加密算法: 2.OC对Sqlite数据库的读写: 3.IOS APP文件存储的两种方式及读取方式. 以 ...
随机推荐
- 警惕:利用Dropbox链接散播的恶意软件
趋势科技近期发现好几起利用热门文档代管服务Dropbox的垃圾邮件.邮件的内嵌链接会下载UPATRE恶意软件变种.UPATRE下面载恶意软件而恶名昭彰,当中包含ZBOT恶意软件.CryptoLocke ...
- ZCTF-ARM64-Re300
Re300-arm64 是一个64位的ARM程序.使用IDA加载,蹦出来这个框框,就是说IDA6.6还没有对ARM64位的程序实现relocation的分析. 就是由于这个,所以连对l ...
- 【Trie】【HDU1247】【Hat’s Wordsfd2】
题目大意: hat's word 的定义是字典中 恰好由另外两个单词连接起来的单词 给你一本字典,问有多少个hat's word,(字典按字典序给出) 单词数50000.. 初步思路: 单词分为前缀单 ...
- javascript 兼容各个浏览器的事件
- 实现一个对象验证库系列 -- 3) Fluent以及扩展方法实现 (请大神批评)
前情回顾: 上一篇 2) 验证器实现 简单描述了下验证器的简单实现 本文将说说Fluent方式的实现,欢迎大神们指点指点 3) Fluent以及扩展方法实现 我们按照之前 Fluent 的设想以及我们 ...
- codevs1387
题目描述 Description 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始 图案按照 ...
- 一个可以拓展的垂直多级导航栏 Demo
大四党忙忙碌碌找工作,博客荒废久矣,可谓:终日昏昏醉梦间,忽闻春尽强登山.因过竹院逢僧话,偷得浮生半日闲. 这是个垂直的导航栏,可以有无限多层的子级菜单,看代码注释就够了: <!DOCTYPE ...
- C++ dynamic_cast实现原理
dynamic_cast是一个操作符,其用法不再赘述.查看汇编码可以发现实际调用的是这个函数__RTDynamicCast,其内部实现如下: rtti.h: #pragma once extern & ...
- AJP协议总结与分析
Tomcat服务器通过Connector连接器组件与客户程序建立连接,Connector组件负责接收客户的请求,以及把Tomcat服务器的响应结果发送给客户.默认情况下,Tomcat在server.x ...
- FirewallD 详解
在CentOS7开始,默认是没有iptables的,而是使用了firewall防火墙.与时俱进,简单的整理了一下firewall的使用方法.关于详细的介绍参考官网,就不搬字了.这个网站有中文选项.可以 ...