OleDbException: значение не задано для параметров, когда параметры не определены
Я сталкиваюсь с OleDbException во время выполнения тестов для разрабатываемого приложения. Появится сообщение об ошибке: "Не задано значение для одного или нескольких обязательных параметров".
Я знаю, что этот вопрос, кажется, задавался несколько раз на этом сайте, но в каждом из случаев проблема возникает во время выполнения UPDATE
команда. Мои ошибки кидаются в мои SELECT
команда; Чтобы добавить к путанице, я даже не пытаюсь использовать параметры, поэтому я не уверен, какие параметры он ожидает. Код для метода, который вызывает исключение, приведен ниже:
// Array of column letters, used in constructing the select query.
private readonly string[] COLUMN_LABELS = new string[] { "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ", "BA", "BB",
"BC", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL",
"BM", "BN", "BO", "BP", "BQ", "BR", "BS", "BT", "BU", "BV",
"BW", "BX", "BY", "BZ" };
public AvailabilityReader(string spreadsheet, List<ServiceType> sundayList)
{
// Set up a connection to the spreadsheet.
this.spreadsheet = spreadsheet;
Connection = new OleDbConnection(string.Format((Spreadsheet.EndsWith(".xlsx") ?
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties=Excel 12.0;" :
"Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;"), Spreadsheet));
// Set up an adapter for the spreadsheet.
ColumnNames = new List<string>();
var columnString = "[E-mail Address] AS Email";
for (int i = 1; i <= sundayList.Count; i++)
{
columnString += string.Format(", Column{0}", i);
ColumnNames.Add(string.Format("Column{0}", i));
}
var selectCommand = new OleDbCommand(string.Format("SELECT {0} FROM [DATA$O5:{1}300]", columnString, COLUMN_LABELS[sundayList.Count - 1]), Connection);
Adapter = new OleDbDataAdapter(selectCommand);
CommandBuilder = new OleDbCommandBuilder(Adapter);
CommandBuilder.QuotePrefix = "[";
CommandBuilder.QuoteSuffix = "]";
// Obtain the table.
var data = new DataSet();
Adapter.Fill(data, "DATA");
table = data.Tables["DATA"];
}
Исключение возникает, когда Adapter.Fill(data, "DATA")
называется (Адаптер является частной собственностью AvailabilityReader
учебный класс).
Я, честно говоря, понятия не имею, что происходит, но я полностью ожидаю, что пропустил что-то невероятно простое. Заранее спасибо!
1 ответ
Это обычно происходит, когда ваши имена столбцов неверны. Убедитесь, что они соответствуют таблице, из которой вы получаете данные.