2011-06-09 190 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