本篇我们介绍如何向SqlBlueprintFunctionLibrary类中添加关闭连接和检查连接状态的代码,并且修改代码中的部分不规则的命名,最后介绍如何打包此插件。
1、首先打开以前创建的项目,找到并且打开SqlBlueprintFunctionLibrary类的声明(.h)和实现(.cpp)文件。然后在ConnectToMySQL函数下面添加如下所示代码。
SqlBlueprintFunctionLibrary.h文件
/**
* 获取数据库连接状态
* @param ConnObj 数据库连接对象
* @return bool 数据库是否连接,true为已连接
*/
UFUNCTION(BlueprintCallable, Category = "SQL Utilities")
static bool GetConnectionState(UMyConnectionObject* ConnObj);
/**
* 关闭数据库连接
* @param ConnObj 数据库连接对象
* @return bool 是否关闭成功,true为关闭成功
*/
UFUNCTION(BlueprintCallable, Category = "SQL Utilities")
static bool CloseConnection(UMyConnectionObject* ConnObj);
SqlBlueprintFunctionLibrary.cpp文件
bool USqlBlueprintFunctionLibrary::GetConnectionState(UMyConnectionObject* ConnObj)
{
if (!ConnObj)
{
GEngine->AddOnScreenDebugMessage(-1, 10.0f, FColor::Red, TEXT("对象为空!"));
return false;
}
else
{
if (ConnObj->Conn != nullptr)
{
return true;
}
}
return false;
}
bool USqlBlueprintFunctionLibrary::CloseConnection(UMyConnectionObject* ConnObj)
{
if (GetConnectionState(ConnObj))
{
mysql_close(ConnObj->Conn);
//指针归位,否则会变成悬挂指针
ConnObj->Conn = nullptr;
ConnObj = nullptr;
return true;
}
return false;
}
上述代码比较简单,唯一要留意的是,关闭连接后,指针需要手动归零,否则会变成悬挂指针(野指针),严重时会造成程序崩溃。
2、虚幻4的编码规范官方文档中有:Object类的子类前缀为U,Actor类的子类前缀为A,枚举的前缀为E,结构体的前缀为F,其它的不做介绍。变量命名为每个首字母大写,布尔型的变量前缀必须为b,且常用格式为bIs+动词或名词。临时变量我采用的前缀为t,其它的暂不做介绍。经过粗略优化后的代码如下所示。
SqlBlueprintFunctionLibrary.h文件
// Copyright 2020 NanGongTianYi. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
//引入mysql头文件
#include "mysql.h"
//引入数据库连接对象头文件
#include "MyConnectionObject.h"
#include "SqlBlueprintFunctionLibrary.generated.h"
/** 一行所含数据 */
USTRUCT(BlueprintType)
struct FQueryResultRow
{
GENERATED_BODY()
/** 一行的数据 */
UPROPERTY(BlueprintReadWrite, Category = "Reult Row Value")
TArray<FString>