在UE4.6版本加入的模块。可以让开发者使用SQLite数据库。SQlite是个轻量型的本地数据库。

我下面就来介绍一下如何使用这个模块。

第一步:下载SQLite源代码以及SQLite GUI管理工具SQLite Expert。

进入http://www.sqlite.org/,点击

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的更多相关文章

  1. 如何创建独立的UE4服务端

    原文作者:@玄冬Wong 转载请注明原文出处:http://aigo.iteye.com/blog/2268777 这是论坛上对UE服务端功能的回答,意思是UE4提供了主流MMO网游服务端所具备的特性 ...

  2. UE4开发神秘海域类游戏原型 初阶(二):动画资源的整合

    前一篇已经确定神海类游戏原型的目标,首先要做的就是3C's(Character, Controls, Camera)的开发.   UE4的3C's的程序部分开发主要也就是基于他的GamePlay Fr ...

  3. UE4 使用UGM制作血条

    声明:本文是自己做的项目,可能不是最好的方法,或有错误使用方式.各位不喜勿喷! HP进度 HP背景 将上面的资源拖到UE4中(使用UE4自带的颜色也可实现效果,具体参考官方教程 https://doc ...

  4. UE4高级功能--初探超大无缝地图的实现LevelStream

    转自:http://blog.csdn.net/u011707076/article/details/44903223 LevelStream 实现超大无缝地图--官方文档学习 The Level S ...

  5. UE4 Xml读写

    UE4自带一个XmlParser,可以很方便的实现Xml的读写. 1,在PublicDependencyModuleNames.AddRange中添加XmlParser. 2,include XmlP ...

  6. UE4联机多人游戏基本设置

    UE4自带网络联机功能,但是似乎只有蓝图接口,而真正写功能的时候不能用C++,让人感觉相当诡异 还是作一个简单记录 1.建一个第三人称模板,为什么会用他呢,因为它自带模板的很多组件,直接支持联机功能, ...

  7. Houdini技术体系 基础管线(四) :Houdini驱动的UE4植被系统 上篇

    背景 之前在<Houdini技术体系 过程化地形系统(一):Far Cry5的植被系统分析>一文中已经对AAA游戏中过程化植被的需求有了一定的定义,后续工作就是如何用Houdini开发功能 ...

  8. [UE4]如何编译部署独立专用服务端(Standalone Dedicated Server)

    这是论坛上对UE服务端功能的回答,意思是UE4提供了网游服务端所具备的特性,包括位移修正.物理碰撞检测.这些特性不是UE4才加入,早期UE版本就有了. https://answers.unrealen ...

  9. [UE4]使用C++重写蓝图,SpawnObject根据类型动态创建UObject

    先大量使用蓝图制作项目,后续再用C++把复杂的蓝图重写一遍,用C++代码按照蓝图依葫芦画瓢就可以了,很简单,但需要遵守一些原则: 第一种方法:使用继承 一.创建一个C++类作为蓝图的父类(C++类继承 ...

随机推荐

  1. CentOS6.6 kickstart文件

    # Kickstart file automatically generated by anaconda. #version=DEVELinstall#cdromurl --url http://19 ...

  2. 使用struts通配符报错

    报错截图如下: 主要原因是:对大小写敏感. struts.xml StudentAction.java jsp页面:(重点就是这里,锚里面需要特别注意,大小写应该与struts.xml里面的保持一致, ...

  3. 每天一个linux命令(40):wc命令

    Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数. ...

  4. 了解ASP.NET MVC几种ActionResult的本质:JavaScriptResult &amp; JsonResult

    在之前的两篇文章(<EmptyResult & ContentResult>和<FileResult>)我们剖析了EmptyResult.ContentResult和F ...

  5. java反编译工具JD-GUI

    这款java反编译工具是由C++写的,是一款免费的非商业用途的软件,(Xjad也不错,但是不支持jar反编译) 一.支持众多.class反编译工具 二.支持反编译jar

  6. CentOS6 root 用户 vi/vim 无法开启高亮

    编辑 /etc/profile.d/vim.sh if [ -n "$BASH_VERSION" -o -n "$KSH_VERSION" -o -n &quo ...

  7. C语言union关键字

    union 关键字的用法与struct 的用法非常类似. union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间 ...

  8. 基于visual Studio2013解决C语言竞赛题之0302字符数出

     题目 解决代码及点评 根据题目要求,只要根据用户输入的字母,判断字母之后,给出相应的输出即可 在以下代码中,f32函数实现了该功能,通过if条件判断语句 #include <stdio.h ...

  9. Asp.Net2.0下C#环境 Login控件实现用户登录

    原文:Asp.Net2.0下C#环境 Login控件实现用户登录 一.前台显示效果 二.前台代码             <asp:Login ID="Login1" run ...

  10. SharePoint 2013 引发类型为“System.ArgumentException”的异常。 參数名: encodedValue

    SharePoint 2013 引发类型为"System.ArgumentException"的异常. 參数名: encodedValue 具体错误信息 说明: 运行当前 Web ...