UE4连接MySQL数据库插件开发之编写增加记录代码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了UE4连接MySQL数据库插件开发之编写增加记录代码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5385字,纯文字阅读大概需要8分钟。
内容图文
![UE4连接MySQL数据库插件开发之编写增加记录代码](/upload/InfoBanner/zyjiaocheng/878/9cd8af55d3c84d898a1969e8ee0bdd0b.jpg)
本篇我们首先讲上篇中各个部分代码的作用,然后接着在SqlBlueprintFunctionLibrary类中添加向数据库存入数据的代码,并且介绍如何添加注释,暴露给蓝图。
1、CAPI是一个封装好的为C和C++语言提供连接MySQL数据库的第三方库。其中包含诸多函数,常用的有增删查改等。上篇中我们使用了数据库初始化和连接函数,代码如下所示。
数据库初始化函数
//初始化MYSQL连接对象
ConnObj->Conn = mysql_init(nullptr);
数据库初始化函数是对MYSQL*对象进行初始化,返回值为MYSQL*,详细信息请查看CAPI的官方帮助文档。其源代码函数声明如下。
MYSQL * STDCALL mysql_init(MYSQL *mysql);
数据库连接函数
//判断连接状态,并返回相应信息
if (!mysql_real_connect(ConnObj->Conn,
t_Host.c_str(),
t_userName.c_str(),
t_Password.c_str(),
t_dbName.c_str(),
(uint32)Port,
nullptr, 0))
{
Msg = TEXT("连接失败!");
}
else
{
Msg = TEXT("连接成功!");
}
数据库连接函数是利用MYSQL*对象和数据库信息与数据库间建立一个连接。其参数依次为MYSQL*对象,数据库IP地址,数据库用户名,数据库密码,数据库端口号,unix连接方式(一般为NULL),客户端标识(一般为0),如果连接成功则返回数据库连接句柄,如果失败则返回NULL(0),详细信息请查看CAPI的官方帮助文档。其源代码函数声明如下。
MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host,
const char *user,
const char *passwd,
const char *db,
unsigned int port,
const char *unix_socket,
unsigned long clientflag);
SqlBlueprintFunctionLibrary.cpp文件
UMyConnectionObject* USqlBlueprintFunctionLibrary::ConnectToMySQL(FString Host, FString userName, FString Password, FString dbName, int32 Port, FString& Msg)
{
//字符编码格式转换
std::string t_Host(TCHAR_TO_UTF8(*Host));
std::string t_userName(TCHAR_TO_UTF8(*userName));
std::string t_Password(TCHAR_TO_UTF8(*Password));
std::string t_dbName(TCHAR_TO_UTF8(*dbName));
//数据库连接对象创建
UMyConnectionObject* ConnObj = NewObject<UMyConnectionObject>();
//初始化MYSQL连接对象
ConnObj->Conn = mysql_init(nullptr);
//判断连接状态,并返回相应信息
if (!mysql_real_connect(ConnObj->Conn, t_Host.c_str(), t_userName.c_str(), t_Password.c_str(), t_dbName.c_str(), (uint32)Port, nullptr, 0))
{
Msg = TEXT("连接失败!");
}
else
{
Msg = TEXT("连接成功!");
}
//返回数据库连接对象
return ConnObj;
}
上述代码片段是数据库的连接函数,首先我们进行字符编码格式的转换(MySQL数据库一般为UTF-8编码),然后创建一个蓝图类型的数据库连接对象,再利用数据库初始化函数对连接对象中的Conn进行初始化,最后利用底层封装的数据库连接函数与数据库建立连接。如果连接成功则从else处返回“连接成功”字符串,如果连接失败,则从if处返回“连接失败”字符串,最终返回数据库连接对象(mysql_real_connect()函数连接成功后返回的是一个句柄,连接失败后返回NULL,即为0,而0代表假,!0代表真,所以会返回“连接失败”字符串)。在这里,句柄其实是一个智能指针。
2、现在我们来向此插件中添加增加记录功能。首先利用数据库管理软件(我这里使用的是navicat)新建一个数据库,然后添加一张表,如下所示。
在创建数据库之前一定要安装数据库,一定要安装数据库,一定要安装数据库(重要事情说三遍,我用的是5.5版本的)。
3、打开以前创建的项目,找到SqlBlueprintFunctionLibrary.h和SqlBlueprintFunctionLibrary.cpp文件并打开。在数据库连接函数后添加如下所示代码。
SqlBlueprintFunctionLibrary.h文件
UFUNCTION(BlueprintCallable, Category = "SQL Utilities")
/**
* 向数据库中添加记录
* @param ConnObj 数据库连接对象
* @param sqlQuery 数据库注入语句
* @return bool 注入状态
*/
static bool InsertData(UMyConnectionObject* ConnObj,FString sqlQuery);
SqlBlueprintFunctionLibrary.cpp文件
bool USqlBlueprintFunctionLibrary::InsertData(UMyConnectionObject* ConnObj, FString sqlQuery)
{
std::string t_sqlQuery(TCHAR_TO_UTF8(*sqlQuery));
//判断连接对象是否为空
if (!ConnObj)
{
GEngine->AddOnScreenDebugMessage(-1, 10.0f, FColor::Red, TEXT("对象为空!"));
return false;
}
//判断语句是否执行成功
if (mysql_query(ConnObj->Conn, t_sqlQuery.c_str()))
{
GEngine->AddOnScreenDebugMessage(-1, 8.0f, FColor::Blue, TEXT("执行失败!"));
return false;
}
return true;
}
上述代码中,首先检查数据库连接对象是否为空,然后使用了mysql_query()函数执行了SQL语句,第一个输入参数为MYSQL*对象,第二个输入参数为SQL语句,返回值为1时代表执行失败,其源代码函数声明如下。
int STDCALL mysql_query(MYSQL *mysql, const char *q);
下述代码为UE4常用的一个向屏幕输出调试信息的代码,其需要引入头文件"Engine.h"。
GEngine->AddOnScreenDebugMessage(-1, 8.0f, FColor::Blue, TEXT("执行失败!"));
向数据库中增加记录其实就是执行SQL语句。
4、添加注释时,我这里用的是番茄助手,可以去百度搜索下载试用版,也可以申请教育版(49美金,非商业用途)。需要自定义注释,步骤如下。
第一步:在Visual Studio工具栏点击其按钮。
第二步:打开设置界面后,先选择Suggestions选项,然后点击Edit VA Snippets按钮,最后点击确定按钮。
第三步:先选择Refactoring选项,然后选择Document Methods选项,向编码区添加如下所示代码,最后点击Ok按钮。
/**
*
* @param $MethodArgName$
* @return $SymbolType$
*/
可以根据自己的喜好去配置相关注释。
5、点击本地Windows调试器按钮,等待片刻,编译完成后会自动打开UE4编辑器,打开关卡蓝图,如下图所示连接节点。
6、我们首先填写相关数据库信息,建立连接,然后给InsertData节点不输入数据库连接对象,编译后,播放关卡,效果如下。
我们会发现数据库连接成功了,但是对象为空,其实是以下所示代码的作用。
GEngine->AddOnScreenDebugMessage(-1, 10.0f, FColor::Red, TEXT("对象为空!"));
7、在上一步骤的图表中,我们连接上ConnObj对象,并且填写SQL语句后,效果如下。
我们会发现数据库连接成功了,并且数据也添加了。
8、注释添加后效果如下所示。
至此我们的数据库增加记录功能已添加完毕,可以在代码中那里利用FString拼接字符串,将值添加到数组中,实现InsertData节点的易操作性,下篇我们将会讲修改数据和删除数据。
_编程小萌新& 发布了8 篇原创文章 · 获赞 0 · 访问量 1503 私信 关注内容总结
以上是互联网集市为您收集整理的UE4连接MySQL数据库插件开发之编写增加记录代码全部内容,希望文章能够帮你解决UE4连接MySQL数据库插件开发之编写增加记录代码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。