void Fillcombo()
{
OleDbConnection cn = new OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0;Data Source=Library.accdb");
OleDbCommand cmd = new OleDbCommand(@"SELECT * FROM Books", cn);
cmd.Connection = cn;
OleDbDataReader dr;
try
{
cn.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
string b = dr.GetString("book");//This is the line where im getting an error
cboProgramming.Items.Add(b);
}
}
catch (Exception ex)
{
MessageBox.Show("f");
}
}
答案 0 :(得分:4)
OleDbDataReader.GetString将int
作为参数,并返回string
值。
答案 1 :(得分:1)
// Summary:
// Gets the value of the specified column as a string.
//
// Parameters:
// ordinal:
// The zero-based column ordinal.
//
// Returns:
// The value of the specified column.
//
// Exceptions:
// System.InvalidCastException:
// The specified cast is not valid.
public override string GetString(int ordinal);
你应该传递一个int。
答案 2 :(得分:1)
你可能想要更像的东西:
string b = dr.GetString(dr.GetOrdinal("book"));
作为GetString()
方法(如GetInt32
和所有其他方法)获取列索引 - 可以使用GetOrdinal
方法返回