SQLite C # Простой поиск в базе данных - PullRequest
1 голос
/ 09 июня 2011

Я вставил много информации в базу данных SQlite из моей программы.Теперь моя небольшая задача - найти базу данных и найти из нее статистику.

Пример: у меня есть база данных с тремя полями - метка времени, сообщение и ключ. Теперь я хочу проверить базу данных в сообщении.столбец и подсчитайте, сколько раз определенное ключевое слово (скажем, «ОШИБКА») встречается в базе данных.

Какой самый простой способ сделать это?ВЫБРАТЬ сообщение из базы данных и как мне добавить фильтр ???

Я использую Regex, чтобы отфильтровать некоторые вещи перед вставкой.Должен ли я сделать что-то подобное здесь?

Спасибо

Редактировать:

Я использовал решение, указанное ниже 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 ]

5 голосов
/ 09 июня 2011
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;
}
2 голосов
/ 09 июня 2011

SQLite использует подмножество языка SQL-92, поэтому большинство основ такое же, как и в других средах SQL.Предложения SELECT, FROM, WHERE, ORDER BY работают в основном так, как вы ожидаете.

Документацию по поддерживаемому синтаксису можно найти здесь: SQL как понял SQLite

1 голос
/ 09 июня 2011

Количество появившихся ошибок времени определяется чем-то вроде этого ...

select sum((Length(message) - length(replace(message,'error',''))) / length('error')) from 
from database where
message like '%error%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...