首页 > 解决方案 > C# SQL“索引超出了数组的范围。”

问题描述

我一直在学习如何使用 C# 创建 SQL 库,但我遇到了一个问题。在这里我正在测试如何将文本行的值返回到字符串

为什么编译器会在这里出错?我阅读了方法列表,我的数据库中的“名字”列还有 3 个值。为什么我只能看到一个索引?

我提前感谢您的帮助

{
    
    static void Main(string[] args)
    { 
        string dbName = "URI=file:testeDB.db";
        using (var connection = new SqliteConnection(dbName))
        {
            
            
            connection.Open();
            var command = connection.CreateCommand();
           
            command.CommandText = "SELECT FirstName FROM Persons";
            SqliteDataReader reader = command.ExecuteReader();
            Console.WriteLine(reader);
           

            if ( reader.Read() )
            {
                Console.WriteLine("Reading...");
                Thread.Sleep(1000);
                string myVar = reader.GetString(2); //Index was outside the bounds of the array." 
                
                 Console.WriteLine(myVar);

            }
            else
            {
                Console.WriteLine("Dont Read");
            }
            
        }
    }
}

}

标签: c#sqlsqlite

解决方案


发生这种情况是因为文档中的方法 GetString(int)说“将指定列的值作为字符串获取”。根据您向我们展示的代码,您只是从表 Persons 中检索一列,这就是您收到异常的原因,在这种情况下只有 GetString(0) 可以工作。


推荐阅读