Я пытаюсь обновить одну ячейку листа Excel. Обратите внимание: в моем примере кода ниже я использую переменные для столбца и строки, потому что они будут меняться в соответствии с другими частями моей программы, но для целей отладки я установил для них значения A и 1 соответственно.
Прямо сейчас я получаю сообщение об ошибке «Синтаксическая ошибка (отсутствует оператор) в выражении запроса '06: 31 PM '.
Пожалуйста, не предлагайте просто параметризовать, потому что я знаю, что это не решит мою проблему, и меня не беспокоит инъекция.
Заранее всем спасибо.
string newColumn = "A";
string newRow = "1";
string worksheet2 = strMonth;
var cnnStr2 = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;IMEX=1;HDR=NO\"", textBox1.Text);
var cnn2 = new OleDbConnection(cnnStr2);
cnn2.Open();
string sql2 = String.Format("UPDATE [{0}$] SET {1}{2}={3}", worksheet2, newColumn, newRow, dtpTime.Text.Substring(0, 8));
OleDbCommand objCmdSelect = new OleDbCommand(sql2, cnn2);
objCmdSelect.ExecuteNonQuery();
cnn2.Close();
РЕДАКТИРОВАТЬ: на основе ссылки, предложенной Герхардом, я изменил текст моей команды на следующий:
string sql2 = String.Format("UPDATE [{0}${1}{2}:{1}{2}] SET F1='{3}'", worksheet2, newColumn, newRow, dtpTime.Text.Substring(0, 8));
Теперь это вызывает ошибку «Операция должна использовать обновляемый запрос». Не уверен, что теперь делать. {1} {2}: {1} {2} дает диапазон отдельных ячеек на листе {0} $, а F1 - имя столбца по умолчанию, заданное, если нет имен столбцов, которые я указал в строке подключения с помощью HDR = НЕТ. Наконец, {3} - это подстрока, которой я обновляю ячейку, и она заключена в одинарные кавычки просто потому, что, кажется, все так делают. Если я удалю одинарные кавычки, это приведет к другой ошибке.