В принципе, у меня есть некоторый код, который берет (1) буквенно-цифровой или (2) числовой серийный номер и увеличивает их. Все работает для числовых серийных номеров, но когда я пытаюсь вставить буквенно-цифровой серийный номер, он выдает ошибку «неверное имя столбца».
Я просмотрел множество постов с "недопустимым именем столбца", и ни один из них, похоже, не отвечает на мой вопрос. Я установил точки останова и запустил код для обоих случаев (числовой и буквенно-цифровой), и я получаю одинаковые типы данных. В основном все выглядит правильно, поэтому я в растерянности.
Следующий код показывает, как я увеличиваю в обоих случаях. Обратите внимание, что для буквенно-цифрового приращения я вызываю метод IncrementAlphaNumeric, который принимает переменную «Output», которая является результатом запроса SQL, который сортирует таблицу и получает последний серийный номер.
// Increment Numeric Serial Numbers
if (isNum)
{
int lastNumber = Int32.Parse(Output);
int[] ints = Enumerable.Range(lastNumber + 1, printQuantity).Select(i => (int)i / 1).ToArray();
increments = ints.Select(x => x.ToString()).ToArray();
output.AppendText("Serial numbers to print: " + string.Join(", ", increments));
}
// Increment AlphaNumeric Serial Numbers
if (!isNum)
{
for (int i = 0; i < printQuantity; i++)
{
increments[i] = IncrementAlphaNumeric(Output);
snList.Add(increments[i]);
Output = increments[i];
}
output.AppendText("Serial numbers to print: " + string.Join(", ", increments));
}
Наконец, я использую Stringbuilder для вставки данных в базу данных следующим образом:
// (5) Store new SNs in Database
StringBuilder sb = new StringBuilder();
foreach (string newSns in increments)
{
sb.AppendLine("INSERT INTO [Manufacturing].[dbo].[Device.Devices]([SerialNumber],[DeviceTypeID]) VALUES(" + newSns + "," + dType +")");
}
using (SqlCommand insertCommand = new SqlCommand(sb.ToString(), cnn))
{
var executeNonQuery = insertCommand.ExecuteNonQuery();
}
Опять же, это работает для числовых, но не для буквенно-цифровых. Когда я ставлю свои точки останова и выполняю код, типы данных (строки) одинаковы для каждого случая, числового и буквенно-цифрового.
Я получаю сообщение об ошибке "Неверное имя столбца". Как правило, ожидаемые результаты должны заключаться в том, что серийный номер, независимо от того, является ли он числовым или буквенно-цифровым, должен быть вставлен в правильную таблицу базы данных, основанную на типе устройства (dType).