gpt4 book ai didi

c# - 缓存 mysql 结果 C#

转载 作者:行者123 更新时间:2023-11-29 06:05:20 25 4
gpt4 key购买 nike

有没有办法缓存 MySQL 查询的结果,特别是数据读取器?

我有一些普通的查询,实际上只需要在加载应用程序时执行一次,然后每个表单都可以使用缓存值而不是查询远程服务器。

目前我的方法是使用 MySqlDataReader 检索数据并将其存储在另一个 MySqlDataReader 中,以便我稍后可以检索它(下面的示例)

if (parentfrm.prioritylist != null)
{
if (parentfrm.prioritylist.HasRows)
{
using (var rows = parentfrm.prioritylist)
{
while (rows.Read())
{
cboxitem cbi = new cboxitem(int.Parse(rows["priorityid"].ToString()), rows["label"].ToString());
cb.Items.Add(cbi);
}
}
}
else
{
query = @"SELECT priorityid, label FROM prioritylist WHERE active = 'Y' ORDER BY theorder ASC";
parentfrm.prioritylist = db.localfetchrows(query);
if (cb != null)
{
using (var rows = db.localfetchrows(query))
{
while (rows.Read())
{
cboxitem cbi = new cboxitem(int.Parse(rows["priorityid"].ToString()), rows["label"].ToString());
cb.Items.Add(cbi);
}
}
}
}
}
else
{
query = @"SELECT priorityid, label FROM prioritylist WHERE active = 'Y' ORDER BY theorder ASC";
parentfrm.prioritylist = db.localfetchrows(query);
if (cb != null)
{
using (var rows = db.localfetchrows(query))
{
while (rows.Read())
{
cboxitem cbi = new cboxitem(int.Parse(rows["priorityid"].ToString()), rows["label"].ToString());
cb.Items.Add(cbi);
}
}
}
}

最佳答案

public class Priority{
public int PriorityId {get;set;}
public string Label {get;set;}
}

public class CachedItems {
private static List<Priority> _priorityList=new List<Priority>();

public static List<Priority> GetPriorityList() {
if (_priorityList==null){
// Load DB Items to the _priorityList,
// if the app is multithreaded, you might wanna add some locks here
}
}
}

然后在代码中的任何位置,只需使用 CachedItems.GetPriorityList() 即可访问缓存列表。

关于c# - 缓存 mysql 结果 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11741219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com