数据库操作

PluginBase 中定义三个和数据库相关的属性:

属性 类型 说明
ConnectionString string 数据库连接字符串
DatabaseType DatabaseType 数据库连接字符串
DatabaseApi IDatabaseApi 数据库连接字符串

通过使用父类PluginBase中的数据库属性,我们就可以实现数据库操作了。

对数据库操作的方式有很多种,可以根据喜好选择最合适的方法。

新增数据

新增数据示例:

  1. public int Insert(LogInfo logInfo)
  2. {
  3. string sqlString = $@"INSERT INTO {TableName}
  4. (
  5. {nameof(LogInfo.FormId)},
  6. {nameof(LogInfo.ItemIds)},
  7. {nameof(LogInfo.UniqueId)},
  8. {nameof(LogInfo.AddDate)},
  9. {nameof(LogInfo.AttributeValues)}
  10. ) VALUES (
  11. @{nameof(LogInfo.FormId)},
  12. @{nameof(LogInfo.ItemIds)},
  13. @{nameof(LogInfo.UniqueId)},
  14. @{nameof(LogInfo.AddDate)},
  15. @{nameof(LogInfo.AttributeValues)}
  16. )";
  17. var parameters = new List<IDataParameter>
  18. {
  19. databaseApi.GetParameter(nameof(logInfo.FormId), logInfo.FormId),
  20. databaseApi.GetParameter(nameof(logInfo.ItemIds), logInfo.ItemIds),
  21. databaseApi.GetParameter(nameof(logInfo.UniqueId), logInfo.UniqueId),
  22. databaseApi.GetParameter(nameof(logInfo.AddDate), logInfo.AddDate),
  23. databaseApi.GetParameter(nameof(logInfo.AttributeValues), logInfo.ToString())
  24. };
  25. return databaseApi.ExecuteNonQueryAndReturnId(TableName, nameof(LogInfo.Id), connectionString, sqlString, parameters.ToArray());
  26. }

修改数据

修改数据示例:

  1. public void Update(FieldInfo info)
  2. {
  3. string sqlString = $@"UPDATE {TableName} SET
  4. {nameof(FieldInfo.FormId)} = @{nameof(FieldInfo.FormId)},
  5. {nameof(FieldInfo.Taxis)} = @{nameof(FieldInfo.Taxis)},
  6. {nameof(FieldInfo.Title)} = @{nameof(FieldInfo.Title)},
  7. {nameof(FieldInfo.Description)} = @{nameof(FieldInfo.Description)},
  8. {nameof(FieldInfo.PlaceHolder)} = @{nameof(FieldInfo.PlaceHolder)},
  9. {nameof(FieldInfo.FieldType)} = @{nameof(FieldInfo.FieldType)},
  10. {nameof(FieldInfo.Settings)} = @{nameof(FieldInfo.Settings)}
  11. WHERE {nameof(FieldInfo.Id)} = @{nameof(FieldInfo.Id)}";
  12. var updateParms = new []
  13. {
  14. databaseApi.GetParameter(nameof(FieldInfo.FormId), info.FormId),
  15. databaseApi.GetParameter(nameof(FieldInfo.Taxis), info.Taxis),
  16. databaseApi.GetParameter(nameof(FieldInfo.Title), info.Title),
  17. databaseApi.GetParameter(nameof(FieldInfo.Description), info.Description),
  18. databaseApi.GetParameter(nameof(FieldInfo.PlaceHolder), info.PlaceHolder),
  19. databaseApi.GetParameter(nameof(FieldInfo.FieldType), info.FieldType),
  20. databaseApi.GetParameter(nameof(FieldInfo.Settings), info.Settings),
  21. databaseApi.GetParameter(nameof(FieldInfo.Id), info.Id)
  22. };
  23. databaseApi.ExecuteNonQuery(connectionString, sqlString, updateParms);
  24. }

删除数据

删除数据示例:

  1. public void Delete(int fieldId)
  2. {
  3. string sqlString = $"DELETE FROM {TableName} WHERE {nameof(FieldInfo.Id)} = @{nameof(FieldInfo.Id)}";
  4. var parms = new []
  5. {
  6. databaseApi.GetParameter(nameof(FieldInfo.Id), fieldId)
  7. };
  8. databaseApi.ExecuteNonQuery(connectionString, sqlString, parms);
  9. }

查询数据

删除数据示例:

  1. public FieldInfo GetFieldInfo(int id, bool isItems)
  2. {
  3. FieldInfo fieldInfo = null;
  4. string sqlString =
  5. $@"SELECT
  6. {nameof(FieldInfo.Id)},
  7. {nameof(FieldInfo.FormId)},
  8. {nameof(FieldInfo.Taxis)},
  9. {nameof(FieldInfo.Title)},
  10. {nameof(FieldInfo.Description)},
  11. {nameof(FieldInfo.PlaceHolder)},
  12. {nameof(FieldInfo.FieldType)},
  13. {nameof(FieldInfo.Settings)}
  14. FROM {TableName}
  15. WHERE {nameof(FieldInfo.Id)} = @{nameof(FieldInfo.Id)}";
  16. var parms = new []
  17. {
  18. databaseApi.GetParameter(nameof(FieldInfo.Id), id)
  19. };
  20. using (var rdr = databaseApi.ExecuteReader(connectionString, sqlString, parms))
  21. {
  22. if (rdr.Read())
  23. {
  24. fieldInfo = GetFieldInfo(rdr);
  25. }
  26. rdr.Close();
  27. }
  28. return fieldInfo;
  29. }