我目前正在将一些将数据存储在 XML 文件中的代码转换为将其存储在 SQLite 数据库中。数据库有一个包含 4 列的表:
缩略图 |标题 |线程编号 |网址
数据库中的所有条目都是字符串。使用我的旧代码,我从 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
}
我可以填充数据网格,它只是了解如何将我的“项目”分解为可用的形式。任何指针表示赞赏。
编辑 我会将此信息添加到数据网格中,这样 SQLite 表中的每个单元格值都将添加到数据网格上的匹配单元格中。
编辑 2 值得一提的是,虽然我的 SQLite 数据库中的 thumbnail
是一个字符串值,但它实际上是一个已转换为 Base64ImageRepresentation
的图像> 这样我就可以将其存储为字符串值。从 SQLite 数据库中获取每个值的部分目的是让我可以在将此字符串添加到我的 DataGridView
之前将其转换回图像。
最佳答案
放弃自定义对象会更容易,而只是读取 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
}
不过,我还是会选择绑定(bind)到可靠数据源的选项。但这应该给你一个大概的想法。
关于c# - 在 'foreach' 语句中使用从 SQLite 查询中检索到的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42905588/