数据库操作
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;}
