使用C#迭代从SQLite表列中提取所有数据

时间:2016-06-29 10:03:55

标签: 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);
                    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,到目前为止,我已尝试将其格式化为stringvarint ,所有这些都返回了上述价值。

有人可以提供一些建议吗?

2 个答案:

答案 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));
}