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

标签 c# .net database sqlite

我有一个 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/

相关文章:

c# - Selenium Chrome 驱动程序显式等待不起作用

javascript - 我正在尝试将数据存储在 sql server 中,但遇到错误,我不知道如何修复

c# - 在 .NET 中捕获消息

c# - 带有 Entity Framework 的 MVC 3 和编辑多个对象导致 "referential integrity constraint violation"

mysql 查询连接 3 个表,其中一个表没有关联

mysql - 获取数据库中最近的位置

python - 如何计算 Cassandra 中特定列族的行键数(阅读详情)

c# - 如何重定向 POST 表单提交,就像它最初提交到另一个页面一样?

.net - 在 EF5 的 select select 子句中选择 null

.net - Silverlight OOB 或 WebHosted 可以在 x64 平台下构建吗?