数据库操作
PluginBase 中定义三个和数据库相关的属性:
属性 | 类型 | 说明 |
---|---|---|
ConnectionString | string | 数据库连接字符串 |
DatabaseType | DatabaseType | 数据库连接字符串 |
DatabaseApi | IDatabaseApi | 数据库连接字符串 |
通过使用父类PluginBase中的数据库属性,我们就可以实现数据库操作了。
对数据库操作的方式有很多种,可以根据喜好选择最合适的方法。
新增数据
新增数据示例:
public int Insert(LogInfo logInfo)
{
string sqlString = $@"INSERT INTO {TableName}
(
{nameof(LogInfo.FormId)},
{nameof(LogInfo.ItemIds)},
{nameof(LogInfo.UniqueId)},
{nameof(LogInfo.AddDate)},
{nameof(LogInfo.AttributeValues)}
) VALUES (
@{nameof(LogInfo.FormId)},
@{nameof(LogInfo.ItemIds)},
@{nameof(LogInfo.UniqueId)},
@{nameof(LogInfo.AddDate)},
@{nameof(LogInfo.AttributeValues)}
)";
var parameters = new List<IDataParameter>
{
databaseApi.GetParameter(nameof(logInfo.FormId), logInfo.FormId),
databaseApi.GetParameter(nameof(logInfo.ItemIds), logInfo.ItemIds),
databaseApi.GetParameter(nameof(logInfo.UniqueId), logInfo.UniqueId),
databaseApi.GetParameter(nameof(logInfo.AddDate), logInfo.AddDate),
databaseApi.GetParameter(nameof(logInfo.AttributeValues), logInfo.ToString())
};
return databaseApi.ExecuteNonQueryAndReturnId(TableName, nameof(LogInfo.Id), connectionString, sqlString, parameters.ToArray());
}
修改数据
修改数据示例:
public void Update(FieldInfo info)
{
string sqlString = $@"UPDATE {TableName} SET
{nameof(FieldInfo.FormId)} = @{nameof(FieldInfo.FormId)},
{nameof(FieldInfo.Taxis)} = @{nameof(FieldInfo.Taxis)},
{nameof(FieldInfo.Title)} = @{nameof(FieldInfo.Title)},
{nameof(FieldInfo.Description)} = @{nameof(FieldInfo.Description)},
{nameof(FieldInfo.PlaceHolder)} = @{nameof(FieldInfo.PlaceHolder)},
{nameof(FieldInfo.FieldType)} = @{nameof(FieldInfo.FieldType)},
{nameof(FieldInfo.Settings)} = @{nameof(FieldInfo.Settings)}
WHERE {nameof(FieldInfo.Id)} = @{nameof(FieldInfo.Id)}";
var updateParms = new []
{
databaseApi.GetParameter(nameof(FieldInfo.FormId), info.FormId),
databaseApi.GetParameter(nameof(FieldInfo.Taxis), info.Taxis),
databaseApi.GetParameter(nameof(FieldInfo.Title), info.Title),
databaseApi.GetParameter(nameof(FieldInfo.Description), info.Description),
databaseApi.GetParameter(nameof(FieldInfo.PlaceHolder), info.PlaceHolder),
databaseApi.GetParameter(nameof(FieldInfo.FieldType), info.FieldType),
databaseApi.GetParameter(nameof(FieldInfo.Settings), info.Settings),
databaseApi.GetParameter(nameof(FieldInfo.Id), info.Id)
};
databaseApi.ExecuteNonQuery(connectionString, sqlString, updateParms);
}
删除数据
删除数据示例:
public void Delete(int fieldId)
{
string sqlString = $"DELETE FROM {TableName} WHERE {nameof(FieldInfo.Id)} = @{nameof(FieldInfo.Id)}";
var parms = new []
{
databaseApi.GetParameter(nameof(FieldInfo.Id), fieldId)
};
databaseApi.ExecuteNonQuery(connectionString, sqlString, parms);
}
查询数据
删除数据示例:
public FieldInfo GetFieldInfo(int id, bool isItems)
{
FieldInfo fieldInfo = null;
string sqlString =
$@"SELECT
{nameof(FieldInfo.Id)},
{nameof(FieldInfo.FormId)},
{nameof(FieldInfo.Taxis)},
{nameof(FieldInfo.Title)},
{nameof(FieldInfo.Description)},
{nameof(FieldInfo.PlaceHolder)},
{nameof(FieldInfo.FieldType)},
{nameof(FieldInfo.Settings)}
FROM {TableName}
WHERE {nameof(FieldInfo.Id)} = @{nameof(FieldInfo.Id)}";
var parms = new []
{
databaseApi.GetParameter(nameof(FieldInfo.Id), id)
};
using (var rdr = databaseApi.ExecuteReader(connectionString, sqlString, parms))
{
if (rdr.Read())
{
fieldInfo = GetFieldInfo(rdr);
}
rdr.Close();
}
return fieldInfo;
}