You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.8 KiB

using Apewer;
using System;
namespace Apewer.Source
{
/// <summary>数据库引擎的执行结果。</summary>
public class Execute : IExecute, IToJson
{
private bool _success = false;
private string _message = "";
private int _rows = 0;
/// <summary>语句执行成功。</summary>
public bool Success { get => _success; }
/// <summary>受影响的行数。</summary>
public int Rows { get => _rows; }
/// <summary>消息。</summary>
public string Message { get => _message; }
/// <summary>创建实例。</summary>
public Execute(bool success, string message)
{
_success = false;
_message = message;
}
/// <summary>创建实例。</summary>
public Execute(bool success, int rows)
{
_success = success;
_rows = rows;
}
/// <summary>创建实例,Exception 为 NULL 时候成功,非 NULL 时为失败。</summary>
public Execute(Exception exception)
{
_success = exception == null;
_message = RuntimeUtility.Message(exception);
}
/// <summary>从 <see cref="Execute"/> 到 <see cref="Execute"/> 的隐式转换,判断 <see cref="Execute"/> 执行成功。</summary>
public static implicit operator bool(Execute instance)
{
return instance != null && instance.Success;
}
#region IToJson
/// <summary>转换为 Json 对象。</summary>
public Json ToJson()
{
var jsonObject = Json.NewObject();
jsonObject.SetProperty("success", _success);
jsonObject.SetProperty("message", _message);
jsonObject.SetProperty("rows", _rows);
return jsonObject;
}
#endregion
}
}