如何使用的Ue4自带的SQLiteSupport
在UE4.6版本加入的模块。可以让开发者使用SQLite数据库。SQlite是个轻量型的本地数据库。
我下面就来介绍一下如何使用这个模块。
第一步:下载SQLite源代码以及SQLite GUI管理工具SQLite Expert。
DownLoad,选择源代码下载。

SQLite Expert可以去http://www.sqliteexpert.com/下载,个人版是完全免费,这里我推荐用破解的专业版,同时本人不太喜欢新版本。
第二步:编译对应平台的LIB文件
进入\Engine\Source\ThirdParty\sqlite,并且新建文件夹命名为sqlite,将源代码中的文件解压至新建的文件夹。之后返回上级目录,运行VS工程文件。将Debug、Release以及对应的win32、x64都编译一遍,虽然只需要对应平台,但是你以后肯定会打包的,所以为了避免以后找不到这个问题,在这里就全编译了。
第三步:编译引擎
这步我也不确定,官方说明文件中有说需要编译,但是我因为已经编译过了,所以也不太确定。
第四步:在工程文件中加入SQLiteSupport模块
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" , "SQLiteSupport" });
最后在需要使用SQLite的地方包含头文件
#include "Runtime/SQLiteSupport/Public/SQLiteDatabaseConnection.h"
之后就可以使用SQLite了。
下面是一段我测试用的代码,具体怎么用,麻烦各位去看源代码,一共也没几个函数,如果用过SQLite SDK能很快上手。
FSQLiteDatabase Database;
Database.Open (TEXT("D:\\UnrealProject\\Sqlite\\Content\\database.db"), nullptr, nullptr);
//run query where no results are returned
Database.Execute (*(FString::Printf (TEXT ("insert into test (id,name) values (1,123)"), *(FDateTime::Now ().ToString ()), *(FApp::GetSessionId ().ToString ()))));
Database.Close();
这个是AnswerHub的案例代码,我发现第一句话就错了,下面的仅供参考
//create and open the database
FSQLiteDatabase Database();
Database.Open("Path\\To\\File", nullptr, nullptr);
//run query where no results are returned
Database->Execute(*(FString::Printf(TEXT("Update GameSession set SessionTimeEnd= %s where SessionID = %s"), *(FDateTime::Now().ToString()), *(FApp::GetSessionId().ToString()))));
//run query to fetch results from database
FSQLiteResultSet* NameResults = NULL;
if (Database.Execute(*(FString::Printf(TEXT("Select * from Players where SessionID = %s;"), *SessionID)),NameResults))
{
for (FSQLiteResultSet::TIterator NameIterator(NameResults); NameIterator; ++NameIterator)
{
//do something with the results here
}
}
2016.7.7补充
上文的路径可以使用相对目录
包含头文件#include "Runtime/Core/Public/Misc/paths.h",使用FPaths::GameDir(),就可以了。
具体用法参考https://wiki.unrealengine.com/Packaged_Game_Paths,_Obtain_Directories_Based_on_Executable_Location
以下是paths.h中的部分代码,在使用Sqlite之前最好先判断是否存在db文件(FPaths::FileExists),不然Sqlite就会自己创建一个新文件。
/**
* Returns the base directory of the current game by looking at FApp::GetGameName().
* This is usually a subdirectory of the installation
* root directory and can be overridden on the command line to allow self
* contained mod support.
*
* @return base directory
*/
static FString GameDir();
/**
* Returns the content directory of the current game by looking at FApp::GetGameName().
*
* @return content directory
*/ static FString GameContentDir();/** @return true if this file was found, false otherwise */ static bool FileExists(const FString& InPath); /** @return true if this directory was found, false otherwise */ static bool DirectoryExists(const FString& InPath);/** Convert all / and \ to TEXT("/") */
static void NormalizeFilename(FString& InPath);/** Normalize all / and \ to TEXT("/") and remove any trailing TEXT("/") if the character before that is not a TEXT("/") or a colon */
static void NormalizeDirectoryName(FString& InPath);
/**
* Converts a relative path name to a fully qualified name relative to the process BaseDir().
*/
static FString ConvertRelativePathToFull(const FString& InPath);
如何使用的Ue4自带的SQLiteSupport的更多相关文章
- 如何创建独立的UE4服务端
原文作者:@玄冬Wong 转载请注明原文出处:http://aigo.iteye.com/blog/2268777 这是论坛上对UE服务端功能的回答,意思是UE4提供了主流MMO网游服务端所具备的特性 ...
- UE4开发神秘海域类游戏原型 初阶(二):动画资源的整合
前一篇已经确定神海类游戏原型的目标,首先要做的就是3C's(Character, Controls, Camera)的开发. UE4的3C's的程序部分开发主要也就是基于他的GamePlay Fr ...
- UE4 使用UGM制作血条
声明:本文是自己做的项目,可能不是最好的方法,或有错误使用方式.各位不喜勿喷! HP进度 HP背景 将上面的资源拖到UE4中(使用UE4自带的颜色也可实现效果,具体参考官方教程 https://doc ...
- UE4高级功能--初探超大无缝地图的实现LevelStream
转自:http://blog.csdn.net/u011707076/article/details/44903223 LevelStream 实现超大无缝地图--官方文档学习 The Level S ...
- UE4 Xml读写
UE4自带一个XmlParser,可以很方便的实现Xml的读写. 1,在PublicDependencyModuleNames.AddRange中添加XmlParser. 2,include XmlP ...
- UE4联机多人游戏基本设置
UE4自带网络联机功能,但是似乎只有蓝图接口,而真正写功能的时候不能用C++,让人感觉相当诡异 还是作一个简单记录 1.建一个第三人称模板,为什么会用他呢,因为它自带模板的很多组件,直接支持联机功能, ...
- Houdini技术体系 基础管线(四) :Houdini驱动的UE4植被系统 上篇
背景 之前在<Houdini技术体系 过程化地形系统(一):Far Cry5的植被系统分析>一文中已经对AAA游戏中过程化植被的需求有了一定的定义,后续工作就是如何用Houdini开发功能 ...
- [UE4]如何编译部署独立专用服务端(Standalone Dedicated Server)
这是论坛上对UE服务端功能的回答,意思是UE4提供了网游服务端所具备的特性,包括位移修正.物理碰撞检测.这些特性不是UE4才加入,早期UE版本就有了. https://answers.unrealen ...
- [UE4]使用C++重写蓝图,SpawnObject根据类型动态创建UObject
先大量使用蓝图制作项目,后续再用C++把复杂的蓝图重写一遍,用C++代码按照蓝图依葫芦画瓢就可以了,很简单,但需要遵守一些原则: 第一种方法:使用继承 一.创建一个C++类作为蓝图的父类(C++类继承 ...
随机推荐
- hibernate的集中持久化方法的区别
一.预备知识 在所有之前,说明一下,对于hibernate,它的对象有三种状态,transient.persistent.detached 下边是常见的翻译办法: transient:瞬态或者自由态 ...
- centos 7.0 nginx 1.7.9成功安装过程
centos 7.0根目录 的目录构成 [root@localhost /]# lsbin dev home lib64 mnt proc run srv tmp varboot etc lib me ...
- js中的逻辑与(&&)和逻辑或(||)
之前有一个同事去面试,面试过程中碰到这样一个问题: 在js中写出如下的答案 : var a = 2; var b = 3; var andflag = a && b ; var orf ...
- CSS大杂烩(1)
box-sizing 有4种方式 border-box 用来减去padding内边框和边框 前提是设置好固定宽高 content-box 在宽和高之外内边距和边框 其实基本上和原来一样 inherit ...
- DP专辑
今天练了一波DP.时间紧迫我就只贴代码了. 20141120 fzu2129 http://acm.fzu.edu.cn/problem.php?pid=2129 不同的子序列个数 //#pragma ...
- english
I will keep you posted. :我会随时通知您. wow! :(表示极大的惊奇或钦佩)哇,呀 np :no problem Thanks in advance! :先行感谢 take ...
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
1.前言 使用框架都是较新的版本: Spring 4.0.2 RELEASE Spring MVC 4.0.2 RELEASE MyBatis 3.2.6 2.Maven引入需要的JAR包 2.1设置 ...
- 常用的Mysql数据库操作语句大全
一.用户管理: 1.新建用户: >CREATE USER name IDENTIFIED BY 'ssapdrow'; 2.更改密码: >SET PASSWORD FOR name=PAS ...
- JAVA设计模式--单例模式
单例设计模式 Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点. 核心知识点如下: (1) 将采用单例 ...
- js/javascript代码注释规范与示例
文件注释 文件注释位于文件的最前面,应包括文件的以下信息:概要说明及版本(必须)项目地址(开源组件必须)版权声明(必须)开源协议(开源组件必须)版本号(必须)修改时间(必须),以ISO格式表示(可使用 ...