2011-06-09 188 views
1

我已经将大量信息从我的程序插入到SQlite数据库中。现在,我的小任务是查找数据库并从中找到一些统计数据。我有一个包含三个字段的数据库 - 时间戳,消息和密钥 现在,我想检查消息列中的数据库并计算某个关键字(如“ERROR”)发生在数据库。SQLite C#简单数据库查询

要做到这一点,最简单的方法是什么? 从数据库中选择消息,如何添加过滤器?

我使用正则表达式来筛选插入前的一些东西。我应该在这里做类似的事吗?

感谢

编辑:

我用下面的SELECT COUNT(*)中提到的解决方案,但我仍然不知道如何获取值出在另一个函数中使用它。我已经展示了我在下面使用的代码。我是SQL新手,可能是错误的。请帮忙!

public void selectFromDatabase() 
    { 
     String cntnStr_query = "data source=C:\\TMU_Files\\test31.s3db"; 
     SQLiteConnection connection_query = new SQLiteConnection(cntnStr_query); 
     connection_query.Open(); 
     SQLiteCommand cmd_query = connection_query.CreateCommand(); 
     cmd_query.CommandText = "SELECT count(*) from LogDatabase where LogMessage like '%ERR%'"; 
     SQLiteDataAdapter da_query = new SQLiteDataAdapter(cmd_query); 
     DataSet ds_query = new DataSet(); 
     //MessageBox.Show(cmd_query.ExecuteNonQuery().ToString()); 
     //MessageBox.Show(count.ToString()); 
     try 
     { 
      da_query.Fill(ds_query); 
      DataTable dt_query = ds_query.Tables[0]; 
     } 
     catch (Exception e) 
     { 
      MessageBox.Show(e.ToString()); 
     } 
     finally 
     { 
      cmd_query.Dispose(); 
      connection_query.Close(); 
     } 
     //cmd_query.Dispose(); 
     //connection_query.Close(); 

    } 
} 

}

+0

只是为了清晰 - 时间错误的号码出现或它出现的行数? – 2011-06-09 18:41:17

+0

它出现的行数。 – techmanc 2011-06-09 18:50:17

+0

upvoting blindy then。 – 2011-06-09 18:51:04

回答

5
select count(*) from database where message like '%error%' 

至于应该如何看起来像在代码中,尝试这样的事情:

using(var sda=new SQLiteDataAdapter(
    "SELECT count(*) from LogDatabase where LogMessage like '%ERR%'", 
    "data source=C:\\TMU_Files\\test31.s3db") 
{ 
    var dt=new DataTable(); 
    sda.Fill(dt); 
    return dt; 
} 
+0

这里算什么?列? – techmanc 2011-06-09 18:39:49

+0

'count'返回查询中的行数。 – Blindy 2011-06-09 18:45:23

+0

是否有一种方法可以将计数的值转换回C#中的某些变量,以供我将其用于其他内容?像计算一次的地方存储在哪里? – techmanc 2011-06-09 19:16:04

2

的SQLite使用SQL-92语言的一个子集,因此大多数的基础知识与其他SQL环境相同。 SELECT,FROM,WHERE,ORDER BY子句的工作方式大部分与您所期望的相同。所支持的语法

文档可以在这里找到:SQL As Understood By SQLite

1

时间错误的号码显示是由像这样给出...

select sum((Length(message) - length(replace(message,'error','')))/length('error')) from 
from database where 
message like '%error%' 
+0

当问题模棱两可时,错误但有趣。 – 2011-06-09 18:51:43