Unity&Sqlite数据库

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

  对于一个表的操作:增删改查,语句和SQLServer语句一样;在表中,有主键(不能为空,也不能重复,可以添加自增功能)、外键(和别的表有关联)、唯一键(unique可以为空,不能重复)。

  在控制台中,使用Sqlite的语句如下:

  sqlite3 data.db ; //打开数据库,没有的话创建一个

  .table ; // 查看数据库中有几个表

  creat table USER(uid integer, name text, score integer);  //创建表 表中有三个字段(可以不写类型,没有类型既什么类型都可以)

  insert into USER values(1,‘郭靖‘,89)  //在USER表中插入一条新的数据

  select * from USER;  //查看当前表中的所有内容

  drop table USER;  //删除USER表

  create table if not exists USER(uid integer primary key autoincrement, name text, score integer);  //整型的uid自增

  insert into USER(name, score) values (‘杨过‘,99);  //uid自增添加数据

  update USER set name=‘黄老邪‘ where score=89;  //修改score为89的人为黄老邪

  delete from USER;  //删除所有数据

  delete from USER where uid =1;  //删除表中uid为1的数据

select uid,name,score from USER;  //查找表中的内容

select name from USER;

select count(*) from USER;  //查找USER表中有几行数据

select sun(score) from USER;  //查找表中所有score的和

select avg(score) from USER;  //查找score的平均数

select * from USER where score>90 and score<95;  //查找表中score大于90且小于95的数据

select * from USER limit 2;  //查找现在前两条

select * form USER order by score  //根据score的大小顺序排序

select *from USER order by score decs;  //根据score的大小倒序排序

select USER.name, USER.score,KUNGFU.name from USER,KUNGFU where USER.uid=KUNGFU.uid;  //联合查询

.exit;  //退出

Sqlite在Unity中使用,需要先在Project->Assest中创建一个Plugins的文件夹,然后把数据库添加进去

代码如下:

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

public class SqliteText : MonoBehaviour {

	SqliteConnection con;	//数据库连接类

	void Start () {
		//连接数据库,如果没有则创建一个数据库
		con = new SqliteConnection ("Data Source =" + Application.database + "/Data/data.db");
		con.Open();//打开数据库
		//创建表
		string sqlStr="create table if not exist USER(uid integer primary key autoincrement, name text, score integer)";
		SqliteCommand command =new SqliteCommand(sqlStr,con);
		//执行命令(没有查询,适用于增删改)
		command.ExecuteNonQuery ();
		//关闭命令(因为Sqlite是单线程的,所以每次执行命令结束后,都应该关闭命令)
		command.Dispose ();
		//插入数据
		sqlStr = "insert into USER(name,score) values (‘王大锤‘,88)";
		command.ExecuteNonQuery(sqlStr,con);
		command.Dispose ();
		sqlStr = "select count(*) from USER";
		//查询单个结果,并转化成整型
		int counts = Convert.ToInt32(command.ExecuteScalar ());
		command.Dispose ();

		//查询多个结果  SqliteDataReader 读取结果类
		sqlStr = "select * from USER";
		command = new SqliteCommand (sqlStr, con);
		SqliteDataReader reader = command.ExecuteReader ();
		//SqliteDataReader取表中数据的逻辑
		//首先,默认有一个指针指向表头,有一个方法让这个指针向下移动一行
		//然后通过列数拿到对应的值,然后指针再往下移动
		//Read() 读取一行
		while(reader.Read()){
			//取出uid
			int uid = reader.GetInt32(0);
			//取出name
			string name = reader.GetString(1);
			//通过字典方式拿去name
			//name = reader["name"].ToString();
			//取出score
			string score = reader.GetInt32(2);
		}
		command.Dispose ();
		reader.Close ();
	}

	void Destroy(){
		con.Close();//关闭数据库
	}
}

  

时间: 2024-10-18 12:28:43

Unity&Sqlite数据库的相关文章

[Unity]SQLite-C#调用 SQLite数据库-Unity操作

SQLite数据库-Unity操作 项目开发的时候,经常会遇到的一种需求,数据存储 离线缓存的数据类型很多,大致分成两类 字符串文本数据 多媒体数据 字符串数据的类型只有字符串,但是结构有很多: xml json md5 base64 普通字符串 多媒体数据的类型: 图片(jpg,png,gif...) 音频(mp3,aif...) 视频(mp4,mpv) 通常用数据库来存储字符串文本类型的数据,但是需要注意的是数据库同时也能存储多媒体类型的数据 关系数据库 在一个给定的应用领域中,所有实体及实

【Unity3D】使用MD5值,确保本地Sqlite数据库内容没有被篡改

Sqlite的应用场景 在判断是否使用存储格式为Sqlite模式的标准,我们的标准是内容只读.也就是说,除非发布者修改Sqlite内容,玩家只有读取的权限. 换个角度说,Sqlite里面的数据都是游戏基础配置数据,比如游戏的关卡(不包括玩家取得的成就).怪物的血量.装备的模板数据 对于如何使用Sqlite,请参考我的另外一篇文章<Unity本地数据存储---Sqlite和JSON> 问题重现 OK,既然我们选择了Sqlite作为存储手段之一,那么我们也嘚重视起安全性. 以android而言,我

unity3d sqlite数据库的读写方法

首先,我们要从unity的安装路径中复制mono.data.sqlite.dll和sqlite3.dll两个动态链接库到untiy的plugins目录下,如下图所示: 使用navicat for sqlite创建一个sqlite数据库文件,放到Resources文件夹目录中,如下图所示: 新建一个DbAccess脚步,添加以下脚步: using UnityEngine; using System; using System.Collections; using Mono.Data.Sqlite;

Unity sqlite学习笔记一

1.SQLITE的常识 SQLite是一个开源免费的数据库,一般用于嵌入系统或者小规模的应用软件开发中,你可以像使用Access一样使用它. sqlite的主要优点:零配置(Zero Configuration)紧凑(compactness)可移植(Portability)它是运行在Windows,Linux,BSD,Mac OS X和一些商用Unix系统,比如Sun的Solaris,IBM的AIX,同样,它也可以工作在许多嵌入式操作系统下,比如QNX,VxWorks,Palm OS, Symb

14 SQLite数据库

SQLite数据库SQLite 是一款轻型的数据库SQLite 的设计目标是嵌入式的SQLite 占用资源低SQL 指结构化查询语言SQL 使我们有能力访问数据库SQL 是一种 ANSI 的标准计算机语言 可视化SQLite操作:数据大多以表的形式存储在数据库中,创建数据库就是将有所关联数据存储到一张表格中,所以可视化数据库操作就是在创建一个个的表格.在这里使用到SQLiteManager SQL语法(创建.增.删.查.改)创建表格create table if not exists 表名(字段

在Android程序中使用已有的SQLite数据库

已经将这篇文章迁移至 Code问答,你也能够到这里查看这篇文章,请多多关注我的新技术博客CodeWenDa.com 在中文搜索中,没有找到一篇比較好的关于怎样在Android应用中使用自己事先创建好的数据库的文章,于是在谷歌上找到这篇英文文章,依照它的步骤,測试成功.决定把这篇文章大致的翻译一下,想看原文的能够点击这里:http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ .

iOS中 FMDB第三方SQLite数据库 UI_20

1.什么是FMDB? FMDB是iOS平台下SQLite数据库,只不过它是OC方式封装了C语言的SQLite语句,使用起来更加面向对象 2.FMDB的优点:1.使用起来更加面向对象; 2.对比苹果自带的 Core Data 数据管理工具更加的轻量级,更加的灵活,而且FMDB支持跨平台; 3.提供多线程下的数据安全保护机制,有效地防止数据混乱 3.FMDM中重要的类: FMDBDataBase: 它代表一个数据库对象,(我们需要创建数据库对象时就使用这个类) FMDBDataBaseQueue:

【Android】Sqlite数据库增删改查

Android系统内置一个Sqlite数据库,如果app需要使用Sqlite数据库数据库存储数据,Android会为此app生成一个.db文件.这个数据库在data/data/<package_name>/databases里面,其中<package_name>为该安卓app的工程包名,这个目录必须root后才能看到.在Windows,单机的应用程序,存储数据,基本放到一个文件里面,正如游戏的存档,基本就是把当前的游戏状态存到一个用户很难找到的文件里面.每次存档读档就是一个从这个存

Sqlite数据库创建、删除、降级笔记

(1).在创建sqlite数据库时需要注意oncreate()方法只有在第一次创建数据库时候运行.当数据库删除后也会执行,sqlite不支持数据库删除,但可以删除相应的文件,即删了数据库.当我们再次配置文件时候就会执行oncreate()了. (2).onUpgrade()只有在版本号发生改变(增加)时候才会执行,很多时候我们直接在onUpgrade()里添加我们想插入的表或者列,但会报错,那是因为你之前版本onUpgrade里的语句会再次执行,若之前插入了表.或者行,此时会再执行一次,因此每次