我使用stringbuilder编写了一个SQL查询,并使用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_id
在SQLite中存储为TEXT
,到目前为止,我已尝试将其格式化为string
,var
和int
,所有这些都返回了上述价值。
有人可以提供一些建议吗?
答案 0 :(得分:2)
您不需要foreach
循环。您应该将阅读器阅读代码更改为
Console.WriteLine("Starting reader: \n");
while (reader.Read())
{
Console.WriteLine(reader["tile_id"].ToString());
}
见Retrieving Data Using a DataReader。了解更多信息。
答案 1 :(得分:1)
reader.Read()
已经移动到下一条记录。所以使用:
while (reader.Read())
{
Console.WriteLine("Starting reader: \n");
Console.WriteLine(reader.GetString(0));
}