1

我收到编译时错误reader.GetString,知道为什么吗?

代码:

using (var connection = new OleDbConnection())
{
    connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Sparrow vivek\Documents\Billing.accdb";
    connection.Open();
    var query = "SELECT ItemCode FROM invoice";
    using (var command = new OleDbCommand(query, connection))
    {
        using (var reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                comboBox1.Items.Add(reader.GetString("ItemCode"));
                comboBox2.Items.Add(reader.GetString("ItemCode"));
            }
        }
    }
}

在此处输入图像描述

4

2 回答 2

4

OleDbDataReader.GetString方法int作为参数,而不是string.

public override string GetString(
    int i
)

它采用从零开始的列号。

由于您只有一列,请将其更改为;

while (reader.Read())
{
    comboBox1.Items.Add(reader.GetString(0));
    comboBox2.Items.Add(reader.GetString(0));
}
于 2014-12-15T14:54:45.477 回答
2

OleDbDataReader.GetString需要输入int. 它需要列序号,而不是列名。

要么直接使用列序号,要么提前确定序号。您可以使用以下方法确定列序号OleDbDataReader.GetOrdinal

comboBox1.Items.Add(reader.GetString(reader.GetOrdinal("ItemCode")));

由于您是在循环中执行此操作,因此您可以执行以下操作:

int itemCodeOrdinal = reader.GetOrdinal("ItemCode");
while (reader.Read())
{
    comboBox1.Items.Add(reader.GetString(itemCodeOrdinal));
    comboBox2.Items.Add(reader.GetString(itemCodeOrdinal));
}
于 2014-12-15T14:56:21.917 回答