c# - 如何使用来自 API 的数据重构数据库连接方法 - c#
问题描述
我尝试使用来自 API 的数据更改我的数据库连接方法,并希望删除与数据库的连接。
这是我的数据库连接,我想用 API 中的数据替换数据库中的数据。
public IEnumerable<AlertLevel> DataBaseConnection(int mapCode)
{
string ConnectionString = "server=192.168.1.1;uid=user;port=3333;pwd=password;database=dbName;";
MySqlConnection Conn = new MySqlConnection(ConnectionString);
var listAlert = new List<AlertLevel>();
try
{
Conn.Open();
//replace(2) with mapCode
string query = "CALL Get_Alert_levels_Station(" + mapCode + ");";
MySqlCommand myCommand = new MySqlCommand(query, Conn);
MySqlDataReader myReader;
myReader = myCommand.ExecuteReader();
try
{
while (myReader.Read())
{
var currentData = new AlertLevel()
{
dateForecast = myReader.GetDateTime(0),
levelForecast = myReader.GetInt32(1)
};
listAlert.Add(currentData);
}
}
finally
{
myReader.Close();
Conn.Close();
}
}
catch (Exception ex)
{
Console.WriteLine("Database Connection", "Not Connected ..." + Environment.NewLine + ex.ToString(), "OK");
}
return listAlert;
}
这是我使用 API 数据的方法:
string GenerateRequestUri(string endpoint)
{
string requestUri = endpoint;
requestUri += $"?id=16";
return requestUri;
}
string GenerateRequestUriStations(string endpoint)
{
string requestUri = endpoint;
requestUri += $"stations";
return requestUri;
}
public WaterBindingData GetData()
{
var reusult = _restServiceData.GetWaterDataForecast(GenerateRequestUriStations(Constants.EndPoint), GenerateRequestUri(Constants.EndPoint));
foreach (var item in reusult.WaterData.Ardaforecast[0].Items)
{
item.DateTimeForecast.ToString();
item.AlertLevelForecast.ToString();
}
return reusult;
}
我想将DataBaseConnection
我的 API 逻辑放入方法中,并希望将 item.DateTimeForecast.ToString();
anditem.AlertLevelForecast.ToString();
放入AlertLevel
,而且我不知道如何将动态变量放入GenerateRequestUri(string endpoint)
:requestUri += $"?id=16";
16 必须是mapCode
解决方案
我假设你想做这样的事情
string GenerateRequestUri(string endpoint, mapCode)
{
string requestUri = endpoint;
requestUri += $"?id={mapCode}";
return requestUri;
}
public IEnumerable<AlertLevel> GetDataFromAPI(int mapCode)
{
var listAlert = new List<AlertLevel>();
var reusult = _restServiceData.GetWaterDataForecast(GenerateRequestUriStations(Constants.EndPoint), GenerateRequestUri(Constants.EndPoint), mapCode);
foreach (var item in reusult.WaterData.Ardaforecast[0].Items)
{
var currentData = new AlertLevel()
{
dateForecast = item.DateTimeForecast.ToString(),
levelForecast = item.AlertLevelForecast.ToString()
};
listAlert.Add(currentData);
}
return listAlert;
}
推荐阅读
- c# - 列出 Kestrel 提供的端点?
- android - 如何从 JSON 数组数据输出中删除大括号 []?
- ios - SDWebImage 不适用于将西班牙字母转换为图像名称 iOS Swift
- python - 我尝试创建一个 lambda 函数并尝试返回元组值,但我收到生成器对象错误
- ios - 首次应用约束时的意外行为
- django - Django 形式的性
- java - 在 eclipse 中,程序已经运行,但按 Run 或 Ctrl+f11 后控制台未打开,但当我按 Run 时,控制台窗口打开
- arrays - 给定两个数组和一个上限,获取总和最大且低于上限的索引对的最有效方法是什么?
- node.js - Mongoose/TypeScript $addToSet、$push 和 $pull 错误
- android - Android AlertDialog 类似于 Android 10 及更高版本中的权限对话框