【发布时间】:2021-11-04 17:59:35
【问题描述】:
我一直在学习如何使用 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");
}
}
}
}
}
【问题讨论】:
-
reader.GetString(0);您的 SQL 查询中只有 一个 字段 (FirstName) -
reader.GetString(2) 表示将结果集当前记录中第三列的值作为字符串提供给我。您在该查询中没有三列,而只有一列。
-
第三行与第三列不同。您将不得不遍历阅读器。
-
查看任何 DataReader 示例,您会发现您可以通过遍历行来访问行。您可以通过使用 ordinal 数字作为
reader.GetString(0);等表达式中的索引或使用列名:reader.GetString("FirstName");来访问列。见:docs.microsoft.com/en-us/dotnet/framework/data/adonet/…