我在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"));
}
}
}
}
答案 0 :(得分:4)
OleDbDataReader.GetString
method将int
作为参数,而不是string
。
public override string GetString(
int i
)
它采用从零开始的列号。
由于您只获得一列,请将其更改为;
while (reader.Read())
{
comboBox1.Items.Add(reader.GetString(0));
comboBox2.Items.Add(reader.GetString(0));
}
答案 1 :(得分: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));
}