使用C#迭代从SQLite表列中提取所有数据
我已经使用stringbuilder编写了一个SQL查询,并使用使用C#迭代从SQLite表列中提取所有数据,c#,sqlite,C#,Sqlite,我已经使用stringbuilder编写了一个SQL查询,并使用SqlteDataReader将其发送到数据库,如下所示: string criteria = String.Format("SELECT tile_id FROM {0} WHERE zoom_level = 14", dbTable); SQLiteCommand command = new SQLiteCommand(criteria, dbConn);
SqlteDataReader
将其发送到数据库,如下所示:
string criteria = String.Format("SELECT tile_id FROM {0} WHERE zoom_level = 14", dbTable);
SQLiteCommand command = new SQLiteCommand(criteria, dbConn);
SQLiteDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine("Starting reader: \n");
foreach (var i in reader)
{
Console.WriteLine(i);
}
}
isMet = true;
}
catch (Exception E )
{
Console.Write(E.StackTrace);
}
dbTable
==map
。我已经通过SQLite浏览器运行了上面的SQL查询,它返回了正确的信息
返回的值总是System.Data.Common.DataRecordInternal
,在谷歌搜索之后,我仍然有点迷路。我发现很多解决方案都实现了一个DataReader
,它解决了这个问题,但我已经在使用它了
tile\u id
在SQLite中存储为TEXT
,到目前为止,我试图检索它的格式为string
、var
和int
,所有这些都返回了上述值
有人能提供一些建议吗?你不需要那种
foreach
循环。您应该将读卡器读取代码更改为
Console.WriteLine("Starting reader: \n");
while (reader.Read())
{
Console.WriteLine(reader["tile_id"].ToString());
}
看。有关详细信息。您不需要为每个循环设置
foreach
循环。您应该将读卡器读取代码更改为
Console.WriteLine("Starting reader: \n");
while (reader.Read())
{
Console.WriteLine(reader["tile_id"].ToString());
}
看。有关详细信息。reader.Read()
已移动到下一条记录(如果有)。因此,请使用:
while (reader.Read())
{
Console.WriteLine("Starting reader: \n");
Console.WriteLine(reader.GetString(0));
}
reader.Read()
已移动到下一条记录(如果有)。因此,请使用:
while (reader.Read())
{
Console.WriteLine("Starting reader: \n");
Console.WriteLine(reader.GetString(0));
}
太好了,非常感谢你。总是很高兴找到更短的解决方案!标记正确。太好了,非常感谢。总是很高兴找到更短的解决方案!标记为正确。