SQLite C # простой поиск по базе данных

#c# #database #sqlite

#c# #База данных #sqlite

Вопрос:

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

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

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

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

Спасибо

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

Я использовал упомянутое ниже решение 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();

    }
}
  

}

Комментарии:

1. просто для ясности — сколько раз появляется ошибка или количество строк, в которых она появляется?

2. количество строк, в которых он отображается..

Ответ №1:

 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. count возвращает количество строк в запросе.

3. есть ли способ вернуть значение count в какую-либо переменную обратно в C #, чтобы я мог использовать его для других целей? Например, где хранится после вычисления?

4. В результирующей таблице данных (если вы вызываете SqlDataAdapter.Fill ) или в программе чтения (если вы используете ExecuteReader ).

5. Пожалуйста, проверьте мой отредактированный код и дайте мне знать, что мне нужно изменить?! Я не могу вызвать SqlDataAdapter.Fill

Ответ №2:

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

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

Ответ №3:

Количество раз, когда появляется ошибка, определяется примерно следующим образом…

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