2017-03-20 54 views
2

我正在將一些存儲XML文件中的數據的代碼轉換爲將其存儲在SQLite數據庫中。該數據庫有4列一個表:在'foreach'語句中使用從SQLite查詢檢索的列表

在數據庫中的條目thumbnail | title | threadid | url

全部都是字符串。使用我的舊代碼,我從XML文件中提取所有數據,並使用這些值填充數據網格。我的目標是做到這一點,但使用從SQLite數據庫中提取的數據。我可以成功地從數據庫中提取表中的所有數據,如下所示:

public List<Database> getFromTable() 
{ 
    List<Database> items = new List<Database>(); 
    string sql = "SELECT * FROM blacklist"; 
    SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection); 
    using (SQLiteDataReader reader = command.ExecuteReader()) 
    { 
     while (reader.Read()) 
     { 
      var item = new Database(); 
      item.imgstring = (string)reader["thumbnail"]; 
      item.titlestring = (string)reader["title"]; 
      item.threadidstring = (string)reader["threadid"]; 
      item.urlstring = (string)reader["url"]; 

      items.Add(item); 
     } 
    } 

    return items; 
} 

現在我卡上是如何使用列表返回的結果的一部分。目前我正在調用該方法,像這樣:

var items = database.getFromTable();

未能找到一些例子後,不過,我不知道如何把foreach線一起使用返回列表中的項目。例如;

foreach (??? in items) 
{ 
    // Populate line in datagrid with thumbnail, title, threadid, url 
} 

我可以得到datagrid填充,它只是瞭解如何將我的'項目'分解成可用的形式。任何指針讚賞。

編輯我將這個信息添加到數據網格中,以便SQLite表中的每個單元格值將被添加到數據網格上的匹配單元格中。

編輯2值得一提的是,雖然thumbnail從我SQLite數據庫是一個字符串值,它實際上是一個已經轉換爲Base64ImageRepresentation的圖像,所以我可以將其存儲爲一個字符串值。從SQLite數據庫中獲取每個值的一部分是我可以在添加到我的DataGridView之前將該字符串轉換回圖像。

+0

「m_dbConnection」聲明在哪裏?看起來你沒有正確處理你的連接。它也需要用using語句包裝。 – mason

+0

它與'public List getFromTable()'在同一個類中。我會得到解決。 – Rawns

+0

你的目標究竟是什麼?你想在'DataGridView'的'List items'中顯示值? 「把我的'項目'分解成可用的形式」「你的意思是」可用的「形式究竟是什麼意思? –

回答

1

放棄自定義對象會更容易,而是直接讀取DataTable並將其作爲DataGridView的來源直接使用。

如果您必須使用自定義對象,那麼您必須遍歷它們,從網格的數據源創建行,然後逐個填充行,並在填充後添加它們。

事情是這樣的:

foreach (var item in getFromTable()) 
{ 
    var index = grid.Rows.Add(); 
    var row = grid.Rows[index]; 
    row.SetValues(item.imgstring, item.titlestring, item.threadidstring, item.urlstring); //order of the items must match field order in grid 
} 

不過,我會選擇結合了堅實的數據源的選項。但是這應該給你一個總的想法。

+0

非常感謝指針,我會試試這個! :) – Rawns

+1

再次感謝!這完成了工作,謝謝! :) – Rawns

相關問題