SQLite C#简单数据库查找

时间:2011-06-09 18:35:35

标签: c# database sqlite

我已经从我的程序中将大量信息插入到SQlite数据库中。现在,我的小任务是查找数据库并从中查找一些统计信息。

例如:我有一个包含三个字段的数据库 - 时间戳,消息和密钥 现在,我想检查Message列中的数据库,并计算数据库中某个关键字(比如“ERROR”)出现的次数。

最简单的方法是什么? 从数据库中选择消息以及如何添加过滤器???

我使用Regex在Insert之前过滤掉一些东西。我应该在这里做类似的事吗?

由于

编辑:

我使用了下面提到的解决方案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();

    }
}

}

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:2)

SQLite使用SQL-92语言的一个子集,因此大多数基础知识与其他SQL环境中的相同。 SELECTFROMWHEREORDER BY条款的所有工作大多与您期望的一样。

有关支持语法的文档,请访问:SQL As Understood By SQLite

答案 2 :(得分:1)

出现的时间错误数量由以下内容给出......

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