gpt4 book ai didi

C# SQlite - 使用 Query 计算字符串重复的次数(并发症)

转载 作者:搜寻专家 更新时间:2023-10-30 23:21:13 27 4
gpt4 key购买 nike

我有一个 SQLite 数据库,它显示在我的 C# Windows 窗体的数据 GridView 中。所以,这个数据库有四列。我特别感兴趣的只是其中一个专栏。该列指示消息的类型。它可以是错误、警报或初始化等。现在我添加了可以在数据库中编辑和更新列的功能。

就像,我选择了一个警报列表,然后将它们分组为警报 #1(它们的类型字段已更新)。同样 ALARM #2 等等......

一切正常。问题是当我想计算警报的数量时。我发送查询

using(var sda=new SQLiteDataAdapter("SELECT count(*) from LogDatabase where Type like '%ALARM%'", "data source=" + database_path))
{
var dt = new DataTable();
int sum_rows_selected=0;
sda.Fill(dt);
int alarms_total = Convert.ToInt16(dt.Rows[0][0]);
MessageBox.Show(alarms_total.ToString());
}

这显示了其中包含 ALARM 的所有字段。因此,最初如果 DB 有 10 行 ALARMS 类型。它显示 10,这很好。但是现在当我将 4 行编辑为 ALARM # 1 和 5 行作为 ALARM # 2.. 我希望计数为 3(#1 为 1,#2 为 1,其余的 ALARMS(此处为 1))...

我设法得到一些奇怪的逻辑来得到正确的答案,但这只有在当时将 ALARMS 编辑为 #1 或 #2 时才有效。如果我关闭窗口然后再回来,它就不起作用了。它再次显示 10...

请帮忙

谢谢

最佳答案

尝试将它们分组:不确定 SQLite 的语法是否不同,但类似

SELECT Type, count(*) from LogDatabase where Type like '%ALARM%' Group by Type

这应该给你

Alarm #1, 4
Alarm #2, 5
Alarm #5, 1

我的 C# 很生疏,但要获取两列的所有行,您需要一个循环、一个数据表或更多变量。如果我搞砸了语法,请原谅我。

string alarms_name[];
int alarms_total[];
int i;
For(i=0;i < dt.Count; i++){
alarms_name[i] = Convert.ToInt16(dt.Rows[i][0]);
alarms_total[i] = Convert.ToInt16(dt.Rows[i][1]);
}

关于C# SQlite - 使用 Query 计算字符串重复的次数(并发症),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6389318/

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